例外:向容器添加窗口如何解决?
我有一个名为Preferences.java
的JDialog
类。 这个类创建一个构造函数,如:
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);
当我运行此代码时,我得到以下exception(因为我单击按钮) :
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: adding a window to a container
这是什么意思,我该如何解决这个问题?
这是什么意思..
一个顶级容器(对话框)无法添加到另一个(框架)。
..我怎么能解决这个问题?
只需在“ Preferences
对话框中调用setVisible(true)
,而不是添加它。
我同意做Swing教程。 你好像把随机代码扔在一起,希望它能起作用。
您没有将JDialog添加到JFrame,这没有任何意义,因为add(...)
方法用于添加要在容器中显示的组件,而不是容器。 您可以从JFrame的JButton的ActionListener中显示JDialog。 您也不应该将AWT(Frame)组件和Swing组件混合在一起,这是没有充分理由的。
您的问题表明,通过Swing教程,您将获益匪浅。
JDialog和JFrame是顶级容器 。 我建议您必须使用JFrame
, JInternalFrame
和JDesktopPane
。
- 为什么我的applet得到java.security.AccessControlException:访问被拒绝(java.net.SocketPermission …),我该如何避免它?
- 正确使用RuntimeException?
- Java的exception处理机制是责任链设计模式的一个例子吗?
- 带有监听器的JavaFX Textfield给出:“java.lang.IllegalArgumentException:start必须<= the end”
- 读取xlsx文件时出现apache POIexception
- com.sun.mail.smtp.SMTPSendFailedException:530-5.5.1需要validation
- 具有exception的覆盖方法
- 如何忽略Java中的exception
- java.sql.SQLException:参数索引超出范围(2>参数个数,为0)