我试图改变 JFrame
的装饰风格。我试过以下代码。
//...
static void main(String[] args) {
EventQueue.invokeLater(()-> {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("This is Title");
frame.setSize(500, 600);
frame.setVisible(true);
});
}
它会更改 JFrame
的装饰风格,但只有在外观设置为 Metal 时才有效。如果在代码中的代码中某处某处改变了外观,则代码为:
for (UIManager.LookAndFeelInfo laf: UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(laf.getName()) {
UIManager.setLookAndFeel(laf.getClassName());
SwingUtilities.updateComponentTreeUI(frame);
}
}
然后,外观改变了,但 frame
的装饰消失了。因此,我无法移动,调整大小,最大化,最小化和关闭frame
。
问题1:
有可能解决这个问题吗?
问题2:
我可以更改
JFrame
的装饰风格 看起来像 Visual Studio 标题栏?
答案 0 :(得分:0)
您可以将JFrame实例本身设置为未修饰:
static void main(String[] args) {
EventQueue.invokeLater(()-> {
JFrame frame = new JFrame("This is Title");
frame.setUndecorated(true);
frame.setSize(500, 600);
frame.setVisible(true);
});
}
如果你想要以不同的方式装饰(而不是未修饰),你将不得不编写自己的LookAndFeel。
或尝试使用" SystemLookAndFeel" - 这大致类似于您正在运行的操作系统。如果是Windows,它最终可能看起来有点像Visual Studio ......