java - UIManager setLookAndFeel 不起作用

标签 java swing look-and-feel uimanager

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

     /**
     * 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()

但它们都没有改变我公司的外观。怎样才能让这个功能生效呢?

最佳答案

人们可能会检查所有外观和感觉:

    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 Button(而不是 JButton)或 JavaFX,您也不会看到任何变化。

你可以这样做:

UIManager.addPropertyChangeListener(...);

并在发生任何更改后进行更改。

关于java - UIManager setLookAndFeel 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22371606/

相关文章:

java - 具有 Windows 外观和感觉的半透明窗口?

java - 没有时区信息的 XMLBeans 日期

java - JList 不会向其中添加数据

java - 覆盖单个组件的 Swing 外观

java - 如何在 Java Swing 中设置当前屏幕尺寸?

java - JComboBox 问题

java - 在不修改应用程序的情况下更改 java 外观

java - 类型为 java.lang.String 的值 yes 无法转换为 JSONObject

java - 从 azure 登录获取 token

java - 2D字符格式数组