关闭jframe,同时打开新的

时间:2013-06-18 05:21:01

标签: java swing event-handling jframe mouse-listeners

我尝试在关闭主框架时打开名为stage2的新框架。但是当我把main.setVisible(false)放在那里时,它说的不是一个封闭的类,我将这个监听器放在由大型机调用的jpanel类上。所以看起来像这样......

class main extends JFrame()
{
   main()
     {
     }
   add(story2)
}

class story2 extends JPanel()
{
    public void mouseClicked(MouseEvent e)
            {

                 new stage2(); 
                 main.this.setVisible(false);
            }
}

1 个答案:

答案 0 :(得分:0)

这是因为story2确实不是main的内部类。您应该使用JComponent的 getTopLevelAncestor() 来获取JFrame story2所处的句柄,然后使用JFrame执行您想要的操作。像这样:

((JFrame)this.getTopLevelAncestor()).dispose();

(如果您不再需要main JFrame,最好使用 dispose() ,而不仅仅是setVisibke(false),以释放资源和记忆。)

上面的代码示例只是一个演示。在生产就绪的应用程序中,您当然应首先检查顶级祖先是否可以强制转换为JFrame(或至少是Window)。