InsertPanel
扩展JPanel
,我将其添加到JFrame
(我的主框架)中。
我想创建一个JDialog
,将我的主框架作为其父框架的构造函数,
InsertPanel.this.getParent()
不返回JFrame
?
为什么它会给我一个ClassCastException
?
eclipse said:Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JPanel cannot be cast to javax.swing.JFrame
我的代码:
createClassButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
new CreateClassDialog((JFrame) InsertPanel.this.getParent());
}
});
感谢!!!
答案 0 :(得分:3)
将Component
添加到JFrame
会将其添加到JFrame
的内容窗格中,该窗格可以是Container
。在你的情况下,它似乎是JPanel
。因此,父级不是您期望的JFrame
答案 1 :(得分:3)
如果您使用面板的方法怎么办? public Container getTopLevelAncestor()
答案 2 :(得分:2)
从异常消息中可以清楚地看到:不,您的具体InsertPanel.this.getParent()
未返回JFrame
,它会返回JPanel
。 (这是因为JFrame
还有内部窗口管理和图层和内容,所以面板的父级只是其他面板。虽然链中的某个地方你会找到JFrame
。你应该找到另一种方法将框架交给对话框。