UIManager setLookAndFeel不起作用

时间:2014-03-13 07:13:34

标签: java swing look-and-feel uimanager

我尝试使用UIManager.setLookAndFeel函数来更改我的java应用程序的外观,但它对我的JFrame /按钮的视觉外观没有任何影响。我使用Netbeans 7.4,我的应用是Java Swing Desktop Application

     /**
     * Main method launching the application.
     */
    public static void main(String[] args) {     
        try {
        UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
        } catch (Exception e) { 
            System.out.println(e.getMessage());
        }
        System.out.println("init");
        launch(JavaMysqlTestApp.class, args);        
    }

我用过

  • com.sun.java.swing.plaf.motif.MotifLookAndFeel
  • javax.swing.plaf.metal.MetalLookAndFeel
  • com.sun.java.swing.plaf.gtk.GTKLookAndFeel
  • UIManager.getSystemLookAndFeelClassName()
  • UIManager.getCrossPlatformLookAndFeelClassName()

但是他们没有改变我的任何外表。如何使此功能生效?

1 个答案:

答案 0 :(得分:1)

有人可能会检查所有的外观:

    try {
        LookAndFeel laf = UIManager.getLookAndFeel();
        for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
            ...
            if (laf.getName().equals(info.getName())) {
                ...;
            }
        }
    } catch (ClassNotFoundException | InstantiationException
            | IllegalAccessException | UnsupportedLookAndFeelException ex) {
        Logger.getLogger(NewJFrame1.class.getName()).log(Level.SEVERE, null, ex);
    }

外观可能第二次设置。对于初学者发现这个问题:L& F仅适用于 swing ;如果使用 awt 按钮(而不是JButton)或JavaFX,您将看不到任何变化。

你可以这样做:

UIManager.addPropertyChangeListener(...);

如果发生任何变化,请事后做出改变。