Hux*_*uxi 57
您可以通过调用dialog.setUndecorated(true)来删除整个对话框标题,但这意味着无法再移动该对话框.
您还可以执行dialog.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE)以防止该按钮执行任何操作.
除此之外,我认为没有办法完全删除X.
the*_*e19 12
我相信你可以打电话dialog.setUndecorated(true)删除标题栏.虽然不确定'X'.
但是,删除"X"可能不是一个好主意,因为您希望用户能够轻松关闭对话框.
最好的办法是控制用户点击'X'时发生的事情dialog.setDefaultCloseOperation或使用a WindowListener.
从Java 1.7(AKA Dolphin或Java 7)开始,您无法禁用或删除Window上的关闭按钮.您可以删除/禁用最大化按钮,frame.setResizable(false)您可以使用java.awt.Dialog扩展按钮来删除最小化和最大化按钮,例如javax.swing.JDialog.您可以删除标题栏,边框和按钮frame.setUndecorated(true),您可以完全控制标题栏中所有按钮的可见性(同时失去一些跨平台兼容性和操作系统集成)frame.setDefaultLookAndFeelDecorated(true)(假设它是JFrame或JDialog) .这是我在当前JDK中看到的所有控件.
这是我的经验:
setUndecorated(true):使整个Dialog不可见。setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE):这根本没有改变行为。我的对话框仍然关闭。设置默认关闭操作以将DO_NOTHING_ON_CLOSE关闭操作委托给windowClosing()已注册的方法WindowListener。对我有用的是:
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
//Remove any existing WindowListeners
for (WindowListener wl : this.getWindowListeners()) {
this.removeWindowListener(wl);
}
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
if ("Optional condition") {
JOptionPane.showMessageDialog(null, "You cannot close this window");
}
}
});
Run Code Online (Sandbox Code Playgroud)