【问题标题】:close jframe while opening new one打开新的时关闭jframe
【发布时间】:2013-06-18 05:21:01
【问题描述】:

我尝试在关闭主框架时打开名为 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);
            }
}

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-26
      • 2015-10-15
      • 2011-03-03
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      • 2015-07-19
      相关资源
      最近更新 更多