Java Look and Feel (L&F) [fermé]


163

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?


1
Nimrod look-n-feel LGPL par Nilo J. González: personales.ya.com/nimrod/faq-en.html . Un peu bogué (impossible de définir la couleur d'arrière-plan d'un JButton - résolu avec le remplacement de paintComponent () en utilisant une technique translucide BufferedImage)
ecle

Réponses:


199

2
Un moyen rapide de voir à quoi ressemble votre application sous Nimbus, démarrez l'application avec l'argument `-Dswing.defaultlaf = javax.swing.plaf.nimbus.NimbusLookAndFeel` par exemple java -Dswing.defaultlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel -jar MyApp.jar
nos

3
Pour utiliser l' aspect et la convivialité du métal dans les applications existantes, ajoutez un -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeelparamètre à l'invocation java.
maciej

Lequel d'entre eux convient aux écrans "Retina"? (non seulement sur OS X, il y a aussi des ordinateurs portables sur Win 8 avec des écrans haute résolution)
Nom d'affichage

61

Vous pouvez essayer L&F que je développe - WebLaF
Il combine trois parties nécessaires pour un développement d'interface utilisateur réussi:

  • L&F re-stylable multiplateforme 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: GPLv3 et commerciales

Quelques exemples montrant à quoi ressemblent certains des composants WebLaF: Certains des composants WebLaF

La principale raison 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 modifier 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 moyens peu pratiques de le faire. C'est encore pire en ce qui concerne le style des composants personnalisés / tiers - ils ne ressemblent pas à d'autres composants stylisés par un L&F spécifique ou même totalement différents - ce qui donne à votre application un aspect non professionnel et désagréable.

Mon objectif est de fournir un L&F entièrement personnalisable avec un pack de composants supplémentaires largement connus et utiles (par exemple: sélecteur de date, table arborescente, volets ancrables et document et bien d'autres) et des gestionnaires et utilitaires utiles supplémentaires, qui réduiront le quantité de code nécessaire pour intégrer rapidement WebLaF dans votre application et aider à créer des interfaces utilisateur impressionnantes à l'aide de Swing.


Notez qu'avant de vous lancer sans regarder la licence, la licence est gpl. Cela pourrait ou non être un problème pour certains.
Tinus Tate

Je pense que dépenser quelques centaines d'euros pour une licence commerciale est bien mieux que de donner cet argent à votre avocat pour ses conseils, ce qui sera probablement "acheter une licence commerciale si vous utilisez le produit". En outre, leur site indique que vous bénéficiez d'un support technique prioritaire lorsque vous achetez une licence commerciale.
Jeff Holt

4

Vous pouvez également utiliser JTattoo ( http://www.jtattoo.net/ ), il a quelques thèmes sympas qui peuvent ê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 sympas dont ils disposent:

  • 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


1

Voici le code qui crée une boîte de dialogue qui permet à l'utilisateur de votre application de modifier l'apparence et la convivialité en fonction des systèmes de l' utilisateur . Alternativement, si vous pouvez stocker les Look And Feel recherchés sur votre application, alors ils pourraient être "portables", ce qui est le 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);
                    }
                }
            }
        }
    }
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.