Java Look and Feel (L & F) [geschlossen]

163

Ich entwickle eine Desktop-Anwendung mit Java Swing für meinen persönlichen Gebrauch. Ich brauche ein schönes Look and Feel für meine Anwendung. Wie kann ich dies mit Java oder einer Drittanbieter-API tun?

Rajesh
quelle
1
LGPL'ed Look-n-Feel-Nimrod von Nilo J. González: personales.ya.com/nimrod/faq-en.html . Ein bisschen fehlerhaft (Hintergrundfarbe für einen JButton kann nicht eingestellt werden - gelöst mit paintComponent () überschreiben mit einer durchscheinenden BufferedImage-Technik)
ecle

Antworten:

199

Es gibt viele Möglichkeiten für LaFs:


Ressourcen:

Verwandte Themen :

Colin Hebert
quelle
2
Schnelle Möglichkeit , um zu sehen , wie Ihre Anwendung aussieht unter Nimbus, die App mit dem Argument starten `-Dswing.defaultlaf = javax.swing.plaf.nimbus.NimbusLookAndFeel` zB java -Dswing.defaultlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel -jar MyApp.jar
nos
3
Um das Erscheinungsbild von Metal in vorhandenen Apps zu verwenden, fügen Sie -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeeldem Java-Aufruf Parameter hinzu.
Maciej
Welche von ihnen sind auf "Retina" -Displays in Ordnung? (Nicht nur unter OS X, es gibt jetzt auch Laptops unter Win 8 mit hochauflösenden Bildschirmen)
Anzeigename
61

Sie können L & F ausprobieren, das ich entwickle - WebLaF
Es kombiniert drei Teile, die für eine erfolgreiche UI-Entwicklung erforderlich sind:

  • Plattformübergreifendes, neu gestaltbares L & F für Swing-Anwendungen
  • Großer Satz erweiterter Swing-Komponenten
  • Verschiedene Dienstprogramme und Manager

Binärdateien: https://github.com/mgarin/weblaf/releases
Quelle: https://github.com/mgarin/weblaf
Lizenzen: GPLv3 und Commercial

Einige Beispiele zeigen, wie einige WebLaF-Komponenten aussehen: Einige WebLaF-Komponenten

Der Hauptgrund, warum ich mit einem völlig neuen L & F angefangen habe, ist, dass die meisten vorhandenen L & F nicht flexibel sind - Sie können sie in den meisten Fällen nicht neu gestalten (Sie können nur einige Farben ändern und im besten Fall einige UI-Elemente ein- und ausschalten) und / oder es gibt nur unbequeme Möglichkeiten, das zu tun. Es ist noch schlimmer, wenn es um das Styling von benutzerdefinierten Komponenten / Komponenten von Drittanbietern geht - sie sehen nicht ähnlich aus wie andere Komponenten, die von einem bestimmten L & F entworfen wurden, oder sogar völlig anders -, was Ihre Anwendung unprofessionell und unangenehm erscheinen lässt.

Mein Ziel ist es, ein vollständig anpassbares L & F mit einer Reihe weiterer allgemein bekannter und nützlicher Komponenten (z. B. Datumsauswahl, Baumtabelle, andockbare und Dokumentfenster und viele andere) sowie zusätzlichen hilfreichen Managern und Dienstprogrammen bereitzustellen, die die Anzahl der Komponenten reduzieren Menge an Code, die erforderlich ist, um WebLaF schnell in Ihre Anwendung zu integrieren und mithilfe von Swing fantastische Benutzeroberflächen zu erstellen.

Mikle Garin
quelle
Beachten Sie, dass die Lizenz gpl ist, bevor Sie hineinspringen, ohne auf die Lizenz zu achten. Dies könnte für einige ein Problem sein oder auch nicht.
Tinus Tate
Ich denke, ein paar hundert Euro für eine kommerzielle Lizenz auszugeben ist weitaus besser, als Ihrem Anwalt dieses Geld für seinen Rat zu geben, was wahrscheinlich "eine kommerzielle Lizenz kaufen, wenn Sie das Produkt verwenden" sein wird. Außerdem heißt es auf der Website, dass Sie beim Kauf einer kommerziellen Lizenz vorrangigen technischen Support erhalten.
Jeff Holt
4

Sie können auch JTattoo ( http://www.jtattoo.net/ ) verwenden. Es enthält einige coole Themen, die verwendet werden können.

Laden Sie einfach das JAR herunter und importieren Sie es in Ihren Klassenpfad oder fügen Sie es als Maven-Abhängigkeit hinzu:

<dependency>
        <groupId>com.jtattoo</groupId>
        <artifactId>JTattoo</artifactId>
        <version>1.6.11</version>
</dependency>

Hier ist eine Liste einiger der coolen Themen, die sie zur Verfügung haben:

  • com.jtattoo.plaf.acryl.AcrylLookAndFeel
  • com.jtattoo.plaf.aero.AeroLookAndFeel
  • com.jtattoo.plaf.aluminium.AluminiumLookAndFeel
  • com.jtattoo.plaf.bernstein.BernsteinLookAndFeel
  • com.jtattoo.plaf.fast.FastLookAndFeel
  • com.jtattoo.plaf.graphite.GraphiteLookAndFeel
  • com.jtattoo.plaf.hifi.HiFiLookAndFeel
  • com.jtattoo.plaf.luna.LunaLookAndFeel
  • com.jtattoo.plaf.mcwin.McWinLookAndFeel
  • com.jtattoo.plaf.mint.MintLookAndFeel
  • com.jtattoo.plaf.noire.NoireLookAndFeel
  • com.jtattoo.plaf.smart.SmartLookAndFeel
  • com.jtattoo.plaf.texture.TextureLookAndFeel
  • com.jtattoo.plaf.custom.flx.FLXLookAndFeel

Grüße

diegeelvis_SA
quelle
1

Hier ist der Code, der einen Dialog erstellt, mit dem der Benutzer Ihrer Anwendung das Erscheinungsbild basierend auf den Systemen des Benutzers ändern kann. Wenn Sie alternativ die gewünschten Look and Feels in Ihrer Anwendung speichern können, können sie "portabel" sein, was das gewünschte Ergebnis ist.

   public void changeLookAndFeel() {

        List<String> lookAndFeelsDisplay = new ArrayList<>();
        List<String> lookAndFeelsRealNames = new ArrayList<>();

        for (LookAndFeelInfo each : UIManager.getInstalledLookAndFeels()) {
            lookAndFeelsDisplay.add(each.getName());
            lookAndFeelsRealNames.add(each.getClassName());
        }

        String changeLook = (String) JOptionPane.showInputDialog(this, "Choose Look and Feel Here:", "Select Look and Feel", JOptionPane.QUESTION_MESSAGE, null, lookAndFeelsDisplay.toArray(), null);

        if (changeLook != null) {
            for (int i = 0; i < lookAndFeelsDisplay.size(); i++) {
                if (changeLook.equals(lookAndFeelsDisplay.get(i))) {
                    try {
                        UIManager.setLookAndFeel(lookAndFeelsRealNames.get(i));
                        break;
                    }
                    catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                        err.println(ex);
                        ex.printStackTrace(System.err);
                    }
                }
            }
        }
    }
TheArchon
quelle