Java 如何禁用对话框上的X?
有没有办法禁用对话框上的所有X 我可以通过以下方式一次完成此任务:Java 如何禁用对话框上的X?,java,swing,jdialog,Java,Swing,Jdialog,有没有办法禁用对话框上的所有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
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”,字体粗体,30))
JDialog
方法setDefaultCloseOperation
的工作原理与JFrame的类似:
)
也不会对所有帧执行此操作,它只会对其设置的实例执行此操作。如果要应用于所有对话框,需要执行以下操作之一:
- 每次构造对话框时都调用此函数
- 扩展JDialog并将其设置为默认值,然后使用该新类
- 创建一个工厂方法,该方法将使用此默认集构造对话框。然后在需要新对话框时调用此方法
- 对于单个对话框
- 为以后的对话框提供提示
- 为什么不创建一个自定义类来扩展JDialog设置,从而在构造函数中实现所需的关闭行为
class NoCLoseDialog extends JDialog {
NoCloseDialog(){
addWindowListener(new WindowAdaptor(){
// ... Close behavior ...
});
}
}
Crtl+F将JDialog替换为NoCloseDialog…您需要添加windowListener,但还需要为对话框设置默认的关闭操作
setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
if (someConditionIsMet) {
dispose();
}
}
});
razshan,你的问题让人困惑,所以我重新措辞,如果这不正确,更新它,或者回滚它。删除它听起来更好。如果我执行类似于a.setUndecorated(false)的操作,我的大多数对话框都被描述为“int”;我犯了尊重错误我不明白这里“被描述为int”是什么意思?您正在使用
JOptionPane
s吗?请注意,删除X按钮也会从对话框中删除框架。您是否考虑过保留带有取消功能的“X”?