我想通过单击按钮来更改 LookAndFeel
public static void main(String[] args) {
FlatDarculaLaf.setup();
try {
UIManager.setLookAndFeel(new FlatDarculaLaf());
} catch (Exception e) {
e.printStackTrace();
}
JFrame frame = new JFrame("Test");
frame.setLayout(new FlowLayout());
JButton b = new JButton("Click");
b.setSize(10, 5);
b.addActionListener(e -> {
FlatLightLaf.setup();
try {
UIManager.setLookAndFeel(new FlatLightLaf());
} catch (Exception ex) {
ex.printStackTrace();
}
});
frame.getContentPane().add(b);
frame.setVisible(true);
frame.setBounds(0, 0, 1200, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
但是没有成功。有没有办法做到这一点,或者根本不可能?
更改 UI 后使用
SwingUtilities.updateComponentTreeUI(frame)
更新 UI 树。这应该更新框架及其所有组件
如果您使用 FlatLaf(绝佳选择!),您可以在更改外观和感觉后调用
FlatLaf.updateUI();
来更新 UI。这就是 FlatLaf 演示用来切换外观和感觉的方法: