我有一个名为JDialog
的{{1}}类。该类创建一个构造函数,如:
Preferences
在我的程序中,我希望在我点击class Preferences extends javax.swing.JDialog {
Preferences(java.awt.Frame parent,modal) {
super(parent,modal);
//......
}
}
表单中的按钮时打开此首选项对话框。在按钮上注册动作侦听器后,我将代码编写为:
JFrame
当我运行此代码时,我得到以下异常(当我点击按钮时):
Frame fr = new Frame();
Preferences p = new Preferences(fr,false);
fr.add(p);
fr.setVisible(true);
这是什么意思,我该如何解决?
答案 0 :(得分:13)
这是什么意思..
无法将一个顶级容器(对话框)添加到另一个(框架)。
..我该如何解决这个问题?
只需在setVisible(true)
对话框中调用Preferences
,而不是添加它。
答案 1 :(得分:6)
你没有将JDialog添加到JFrame,这没有任何意义,因为add(...)
方法用于添加要在 中显示的组件容器,而不是 容器。您可以从JFrame的JButton的ActionListener中显示JDialog。你也不应该把AWT(Frame)组件和Swing组件混合在一起,没有充分的理由。
您的问题表明,通过浏览Swing教程,您将获益匪浅。
答案 2 :(得分:4)
JDialog和JFrame是top-level container。我建议你必须使用JFrame
,JInternalFrame
和JDesktopPane
。