import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class Frame {
private JFrame jFrame;
public Frame() {
try {
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
}
private void create() {
jFrame = new JFrame("frame");
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setSize(200, 200);
jFrame.setVisible(true);
}
public static void main(String[] args) {
new Frame().create();
}
}
上面的代码工作正常,但如果我将jFrame.undecorated设置为true,它不会删除框架?有谁知道为什么不呢?感谢。
编辑:还发现如果我将jFrame.undecorated设置为false,则还会显示另一个具有默认外观的帧。像这样:
答案 0 :(得分:1)
检查setUndecorated()方法上的doc - 只能在不可见时调用。你的代码在构造函数中注释掉了两个调用,但添加了jFrame.setUndecorated(true);在setVisible()调用之前。
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class Frame {
private JFrame jFrame;
public Frame() {
try {
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
//JFrame.setDefaultLookAndFeelDecorated(true);
//JDialog.setDefaultLookAndFeelDecorated(true);
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
}
private void create() {
jFrame = new JFrame("frame");
jFrame.setUndecorated(true);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setSize(200, 200);
jFrame.setVisible(true);
}
public static void main(String[] args) {
new Frame().create();
}
}
答案 1 :(得分:0)
我遇到了类似的问题,什么对我有用:
setUndecorated(true)
要在框架的构造函数中进行修饰。
在主类的之前中,“外观”实例化对象(您的框架)。曾经被称为setVisible
的东西对我有用。