Java软件看起来是Windows的一部分,属于Metal

时间:2014-11-03 14:20:23

标签: java swing

enter image description here我想要的完全是WindowsLookAndFeel,我在JFrame中有这个代码。

    try {
        UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
    } catch (Exception ex) {
        ex.printStackTrace();
    }

但是,我把它归功于Windows,部分是Metal(跨平台风格看起来很糟糕。我想我知道问题在哪里:

异常部分(金属部分)是JPanel,它最初并非构建在JFrame中。我有一个按钮。如果按下,JPanel将被添加到JFrame。

    if (((JToggleButton) e.getSource()).isSelected()) {
        getContentPane().add(Console.getInstance(), BorderLayout.EAST);
    } else {
        remove(Console.getInstance());
    }
    revalidate();
    pack();

但是,我仍然不知道为什么会这样,以及如何解决它。

1 个答案:

答案 0 :(得分:3)

您需要定义EDT外部外观。创建一个具有main方法的类。在该方法中设置LAF,然后显示应用程序:

try {
 UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch(Exception e) {
 e.printStackTrace();
}

SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            jFrame.pack();
            jFrame.setVisible(true);
        }
    });