web-dev-qa-db-fra.com

Java Apparence (L & F)

Je développe une application de bureau avec Java Swing pour mon usage personnel. J'ai besoin d'une belle apparence pour mon application. Comment puis-je le faire en utilisant Java ou une API tierce?

163
rajesh
200
Colin Hebert

Vous pouvez essayer L & F que je développe - WebLaF
Il combine trois parties nécessaires au bon développement d’une interface utilisateur:

  • L & F inter-plates-formes réutilisables pour les applications Swing
  • Grand ensemble de composants Swing étendus
  • Divers utilitaires et gestionnaires

Binaires: https://github.com/mgarin/weblaf/releases
Source: https://github.com/mgarin/weblaf
Licences: GPLv et Commercial

Quelques exemples montrant à quoi ressemblent certains composants WebLaF: Some of WebLaF components

La raison principale pour laquelle j'ai commencé avec un tout nouveau L & F est que la plupart des L & F existants manquent de flexibilité - vous ne pouvez pas les remodeler dans la plupart des cas (vous ne pouvez changer que quelques couleurs et activer/désactiver certains éléments de l'interface utilisateur dans le meilleur des cas) et/ou il n'y a que des façons peu pratiques de le faire. C'est encore pire en ce qui concerne le style des composants personnalisés/tiers - ils ne ressemblent pas aux autres composants stylés par certains L & F ou même totalement différents - ce qui donne à votre application une apparence peu professionnelle et désagréable.

Mon objectif est de fournir à L & F entièrement personnalisable un pack de composants supplémentaires largement connus et utiles (par exemple: sélecteur de date, table d’arborescence, fenêtres dockables et de documents et bien d’autres), ainsi que des gestionnaires et des utilitaires utiles, qui réduiront la quantité de code nécessaire pour intégrer rapidement WebLaF à votre application et vous aider à créer des interfaces utilisateur impressionnantes avec Swing.

61
Mikle Garin

Vous pouvez également utiliser JTattoo ( http://www.jtattoo.net/ ), il contient quelques thèmes intéressants pouvant être utilisés.

Téléchargez simplement le fichier jar et importez-le dans votre chemin de classe, ou ajoutez-le en tant que dépendance maven:

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

Voici une liste de certains des thèmes intéressants disponibles:

  • 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

Cordialement

4
diegeelvis_SA

Voici le code qui crée un dialogue qui permet à l'utilisateur de votre application de modifier l'apparence en se basant sur les systèmes tilisateur. Alternativement, si vous pouvez stocker les Look and Feel recherchés sur votre application, ils pourraient être "portables", ce qui correspond au résultat souhaité.

   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);
                    }
                }
            }
        }
    }
1
WIll