有没有办法禁用对话框上的所有X?
我可以通过以下方式完成此任务:
JOptionPane pane = new JOptionPane("Are you hungry?", JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION);
JDialog dialog = pane.createDialog("Title");
dialog.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
} });
dialog.setContentPane(pane);
dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
dialog.pack();
但问题是我必须将其应用于其他20-40个对话框,这将耗费时间。
所以我想知道如何使用一行代码使所有对话框上的字体变大(如下所示),是否有办法实现X禁用功能。
UIManager.put( “OptionPane.messageFont”, 新的FontUIResource(新的 字体( “ARIAL”,Font.BOLD,30)));
答案 0 :(得分:1)
JDialog
方法setDefaultCloseOperation
就像JFrame一样:
http://download.oracle.com/javase/6/docs/api/javax/swing/JDialog.html#setDefaultCloseOperation(int)
对于所有帧都不会这样做,它只会为它所设置的实例执行此操作。如果要应用于所有对话框,则需要执行以下操作之一:
答案 1 :(得分:1)
您需要添加一个windowListener,但也需要设置对话框的默认关闭操作。
setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
if (someConditionIsMet) {
dispose();
}
}
});
答案 2 :(得分:0)
您应该删除它,而不是禁用控件。用户不应该看到“X”按钮,然后让它不像他们期望的那样。
请参阅:
答案 3 :(得分:0)
为什么不创建一个扩展JDialog的自定义类,在构造函数中设置所需的关闭行为?
class NoCLoseDialog extends JDialog {
NoCloseDialog(){
addWindowListener(new WindowAdaptor(){
// ... Close behavior ...
});
}
}
Crtl + F用NoCloseDialog替换JDialog ......