我想要的完全是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();
但是,我仍然不知道为什么会这样,以及如何解决它。
答案 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);
}
});