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


163

Sto sviluppando un'applicazione desktop con Java Swing per il mio uso personale. Ho bisogno di un bel look and feel per la mia applicazione. Come posso farlo utilizzando Java o un'API di terze parti?


1
Look-n-feel di LGPL Nimrod di Nilo J. González: personales.ya.com/nimrod/faq-en.html . Un po 'di errore (impossibile impostare il colore di sfondo per un JButton - risolto con l'override di PaintComponent () usando una tecnica traslucida BufferedImage)
ecle

Risposte:


199

2
Modo rapido per vedere come appare la tua applicazione sotto Nimbus, avvia l'app con l'argomento `-Dswing.defaultlaf = javax.swing.plaf.nimbus.NimbusLookAndFeel` ad es. java -Dswing.defaultlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel -jar MyApp.jar
nn

3
Per utilizzare il look and feel di Metal nelle app esistenti aggiungi un -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeelparametro all'invocazione Java.
maciej,

Quali di questi vanno bene sui display "Retina"? (non solo su OS X, ora ci sono laptop su Win 8 con schermi DPI alti)
Visualizza nome

61

Puoi provare L&F che sto sviluppando - WebLaF
Combina tre parti necessarie per lo sviluppo dell'interfaccia utente di successo:

  • L&F re-stylable multipiattaforma per applicazioni Swing
  • Ampio set di componenti Swing estesi
  • Varie utility e gestori

File binari: https://github.com/mgarin/weblaf/releases
Fonte: https://github.com/mgarin/weblaf
Licenze: GPLv3 e commerciale

Alcuni esempi che mostrano l'aspetto di alcuni componenti WebLaF: Alcuni dei componenti WebLaF

Il motivo principale per cui ho iniziato con un L&F completamente nuovo è che la maggior parte degli L&F esistenti mancano di flessibilità - nella maggior parte dei casi non è possibile ridisegnarli (è possibile modificare solo alcuni colori e attivare / disattivare alcuni elementi dell'interfaccia utente nel migliore dei casi) e / o ci sono solo modi scomodi per farlo. È ancora peggio quando si tratta di uno stile personalizzato / componenti di terze parti - non sembrano simili ad altri componenti disegnati da alcuni L&F specifici o addirittura totalmente diversi - che rende la tua applicazione poco professionale e sgradevole.

Il mio obiettivo è fornire un L&F completamente personalizzabile con un pacchetto di componenti aggiuntivi noti e utili (ad esempio: selettore di date, tabella ad albero, riquadri ancorabili e di documenti e molti altri) e utili gestori e utilità utili, che ridurranno il quantità di codice richiesta per integrare rapidamente WebLaF nella tua applicazione e aiutare a creare fantastiche UI usando Swing.


Nota che prima di saltare senza guardare la licenza, la licenza è gpl. Questo potrebbe o non potrebbe essere un problema per alcuni.
Tinus Tate,

Penso che spendere qualche centinaio di euro per una licenza commerciale sia molto meglio che dare quei soldi al tuo avvocato per il suo consiglio, che probabilmente sarà "acquista una licenza commerciale se usi il prodotto". Inoltre, il loro sito dice che ricevi un supporto tecnico prioritario quando acquisti una licenza commerciale.
Jeff Holt,

4

Puoi anche usare JTattoo ( http://www.jtattoo.net/ ), ha un paio di temi interessanti che possono essere usati.

Basta scaricare il vaso e importarlo nel tuo percorso di classe o aggiungerlo come dipendenza Maven:

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

Ecco un elenco di alcuni dei temi interessanti che hanno a disposizione:

  • 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

Saluti


1

Ecco il codice che crea una finestra di dialogo che consente all'utente dell'applicazione di modificare l'aspetto e la sensibilità in base ai sistemi dell'utente . In alternativa, se è possibile memorizzare i look and feel desiderati nella propria applicazione, potrebbero essere "portatili", che è il risultato desiderato.

   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);
                    }
                }
            }
        }
    }
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.