【问题标题】:How to stick a JDialog to a JFrame?如何将 JDialog 粘贴到 JFrame?
【发布时间】:2015-11-06 18:12:36
【问题描述】:

这意味着当我单击 JFrame 中的按钮时,将显示一个 JDialog。我想禁止我的 JFrame,它不会被触摸但仍会显示在屏幕上。 我在框架中使用命令:

button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
               MyDialog md=new MyDialog(MyFrame.this);
               MyDialog.setVisible(true);                 
            }
        });

并且在 MyDialog 类中扩展了 JDialog:

public MyDialog(MyGUI myGUI) {
    super(myGUI,true);}

我的代码有问题吗? 或有其他方法吗? 请帮帮我!!

【问题讨论】:

  • 您的意思是创建对话modal?看看这里:docs.oracle.com/javase/tutorial/uiswing/misc/modality.html
  • 我看不出你的代码有什么问题。您已经通过 super(myGUI,true); 设置了对话框模式,那么您的问题是什么/什么不起作用?
  • 是的,我的程序仍然可以工作,但不能例外。当我的 JDialog 打开时,我的 JFrame 仍然可以被触摸。我不知道上面两个命令的区别:new MyDialog(MyFrame.this) 和 new MyDialog(this)。不知道自己是不是原因?

标签: java swing jdialog modality


【解决方案1】:

MyDialog.setVisible(true);之前添加这个:

MyDialog.setModal(true);

编辑: 这与您已经在使用的 JDialog(Frame owner, boolean modal) 构造函数具有相同的效果。你确定你还没有得到一个模态对话框吗?

【讨论】:

  • 是的,JDialog 和 JFrame 仍然特别有效。当我单击 JFrame 中的按钮时,我仍然可以创建不同的 JDialog。
【解决方案2】:

我找到了我的案子。我习惯了 JDialog 的一些设置,其中两个是:

Container con= getContentPane();
con.add(p);

为我的泳池 JAVA 向大家道歉。我是一个初学者,我正在努力增加我的知识。非常感谢!

【讨论】:

    猜你喜欢
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 2013-03-04
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多