swing
Używaj Look and Feel
Szukaj…
Korzystanie z systemu L&F
Swing obsługuje sporo rodzimych L&F.
Zawsze możesz łatwo zainstalować jedną, nie wzywając określonej klasy L&F:
public class SystemLookAndFeel { public static void main ( final String[] args ) { // L&F installation should be performed within EDT (Event Dispatch Thread) // This is important to avoid any UI issues, exceptions or even deadlocks SwingUtilities.invokeLater ( new Runnable () { @Override public void run () { // Process of L&F installation might throw multiple exceptions // It is always up to you whether to handle or ignore them // In most common cases you would never encounter any of those try { // Installing native L&F as a current application L&F // We do not know what exactly L&F class is, it is provided by the UIManager UIManager.setLookAndFeel ( UIManager.getSystemLookAndFeelClassName () ); } catch ( final ClassNotFoundException e ) { // L&F class was not found e.printStackTrace (); } catch ( final InstantiationException e ) { // Exception while instantiating L&F class e.printStackTrace (); } catch ( final IllegalAccessException e ) { // Class or initializer isn't accessible e.printStackTrace (); } catch ( final UnsupportedLookAndFeelException e ) { // L&F is not supported on the current system e.printStackTrace (); } // Now we can create some natively-looking UI // This is just a small sample frame with a single button on it final JFrame frame = new JFrame (); final JPanel content = new JPanel ( new FlowLayout () ); content.setBorder ( BorderFactory.createEmptyBorder ( 50, 50, 50, 50 ) ); content.add ( new JButton ( "Native-looking button" ) ); frame.setContentPane ( content ); frame.setDefaultCloseOperation ( WindowConstants.EXIT_ON_CLOSE ); frame.pack (); frame.setLocationRelativeTo ( null ); frame.setVisible ( true ); } } ); } }
Oto natywne wsparcie JDK dla L&F (OS -> L&F):
OS | Nazwa L&F | Klasa L&F |
---|---|---|
Solaris, Linux z GTK + | GTK + | com.sun.java.swing.plaf.gtk.GTKLookAndFeel |
Inne Solaris, Linux | Motyw | com.sun.java.swing.plaf.motif.MotifLookAndFeel |
Klasyczny system Windows | Windows | com.sun.java.swing.plaf.windows.WindowsLookAndFeel |
Windows XP | Windows XP | com.sun.java.swing.plaf.windows.WindowsLookAndFeel |
Windows Vista | Windows Vista | com.sun.java.swing.plaf.windows.WindowsLookAndFeel |
Prochowiec | Prochowiec | com.apple.laf.AquaLookAndFeel * |
IBM UNIX | IBM | javax.swing.plaf.synth.SynthLookAndFeel * |
HP UX | HP | javax.swing.plaf.synth.SynthLookAndFeel * |
* te L & F są dostarczane przez dostawcę systemu, a rzeczywista nazwa klasy L&F może się różnić
Korzystanie z niestandardowych L&F
public class CustomLookAndFeel { public static void main ( final String[] args ) { // L&F installation should be performed within EDT (Event Dispatch Thread) // This is important to avoid any UI issues, exceptions or even deadlocks SwingUtilities.invokeLater ( new Runnable () { @Override public void run () { // Process of L&F installation might throw multiple exceptions // It is always up to you whether to handle or ignore them // In most common cases you would never encounter any of those try { // Installing custom L&F as a current application L&F UIManager.setLookAndFeel ( "javax.swing.plaf.metal.MetalLookAndFeel" ); } catch ( final ClassNotFoundException e ) { // L&F class was not found e.printStackTrace (); } catch ( final InstantiationException e ) { // Exception while instantiating L&F class e.printStackTrace (); } catch ( final IllegalAccessException e ) { // Class or initializer isn't accessible e.printStackTrace (); } catch ( final UnsupportedLookAndFeelException e ) { // L&F is not supported on the current system e.printStackTrace (); } // Now we can create some pretty-looking UI // This is just a small sample frame with a single button on it final JFrame frame = new JFrame (); final JPanel content = new JPanel ( new FlowLayout () ); content.setBorder ( BorderFactory.createEmptyBorder ( 50, 50, 50, 50 ) ); content.add ( new JButton ( "Metal button" ) ); frame.setContentPane ( content ); frame.setDefaultCloseOperation ( WindowConstants.EXIT_ON_CLOSE ); frame.pack (); frame.setLocationRelativeTo ( null ); frame.setVisible ( true ); } } ); } }
Możesz znaleźć ogromną listę dostępnych Swing L & F w temacie tutaj: Java Look and Feel (L&F)
Pamiętaj, że niektóre z tych L & F mogą być w tym momencie dość przestarzałe.
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow