Suh*_*pta 3 java swing exception jdialog illegalargumentexception
我有一个JDialog名为的班级Preferences.这个类创建一个构造函数,如:
class Preferences extends javax.swing.JDialog {
Preferences(java.awt.Frame parent,modal) {
super(parent,modal);
//......
}
}
Run Code Online (Sandbox Code Playgroud)
在我的程序中,我希望在单击JFrame表单中的按钮时打开此首选项对话框.在按钮上注册动作监听器后,我将代码写入:
Frame fr = new Frame();
Preferences p = new Preferences(fr,false);
fr.add(p);
fr.setVisible(true);
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,我得到以下异常(当我单击按钮时):
Exception in thread "AWT-EventQueue-0"
java.lang.IllegalArgumentException: adding a window to a container
Run Code Online (Sandbox Code Playgroud)
这是什么意思,我该如何解决?
And*_*son 13
这是什么意思..
一个顶级容器(对话框)无法添加到另一个(框架).
..我怎么能解决这个问题?
只要叫setVisible(true)上Preferences对话,而不是添加它.
你不加的JDialog到JFrame,那是没有任何意义,因为该add(...)方法是将组件添加到显示的不是容器,通过容器.您可以从JFrame的JButton的ActionListener中显示JDialog.您也不应该将AWT(Frame)组件和Swing组件混合在一起,这是没有充分理由的.
您的问题表明,通过Swing教程,您将获益匪浅.