【问题标题】:Dispose a JFrame on button click from another JFrame在从另一个 JFrame 按钮单击时释放一个 JFrame
【发布时间】:2015-04-12 22:59:05
【问题描述】:

可能很多人都知道,我是一个完整的 Java 新手。我已经尝试对此进行研究(通过阅读 StackOverflow 上的其他帖子、谷歌搜索并询问一个不太懂 java 新手的朋友),但我无法弄清楚。答案可能很清楚也很容易,但我对此视而不见。我正在尝试从不同的框架中处理 JFrame

我的应用程序应该如下工作:

  • 框架 X 有一个按钮,按下时:生成框架 Y
  • 框架 Y 有一个按钮,按下时:生成框架 Z
  • 框架 Z 有一个按钮,按下时:从框架 Y 执行方法,然后再处理框架 Y 及其自身。

让框架 Z 处理框​​架 Y 是我的大部分问题所在。 任何帮助是极大的赞赏。理想情况下,帮助应该以即使是婴儿也能理解的方式来表达(因为这是我对 Java 的理解水平)。

我知道很多人会认为这是this questionthis other question 的重复问题。我相信这不是一个重复的问题,因为我已经阅读了这两个并且不明白如何解决我自己的问题。

【问题讨论】:

  • @AndrewThompson 虽然我可以理解使用多个 JFrame 是一种不好的做法,但我已经使用了多个 JFrame 并且不知道如何以其他方式做到这一点。
  • ".. 还不知道怎么做。" 该问题的公认答案显示了十几种方法.. 最佳解决方案取决于什么这些框架的作用,它们包含的内容。
  • 考虑使用CardLayout (How to Use CardLayout)

标签: java swing jframe dispose


【解决方案1】:
  • 框架 Z 有一个按钮,按下时:从框架 Y 执行方法,然后再处理框架 Y 及其自身。

框架 Y 和框架 Z 应该是模态对话框(至少 Z 应该是,也可能是 Y)。

当对话框 Y 进入打开对话框 Z(我们称之为 dialogZ)时,代码应该是这样的:

DialogZ dialogZ = new DialogZ(..);
dialogZ.setVisible(true);
this.setVisible(false); // at this point, dialogZ will have been closed

有关详细信息和示例代码,请参阅How to Use Modality in Dialogs

(Frame Z) ... 执行方法从帧 Y

Frame Y 和 Frame Z 应该扩展任何类。相反,它们应该是根据需要使用的实例变量。

【讨论】:

    【解决方案2】:

    您可以在另一个框架中保存对另一个 jframe 的引用。这个类可能看起来像这样:

    构造函数接受一个jframe,应该从这个jframe中控制。

    class YourFrame {
       public YourFrame(JFrame controlFrame){
           //build the frame and a button, which action listener calls controlFrame.setVisible(false);
           JFrame f = new JFrame();
           f.setSize(800, 600);
           JPanel content = new JPanel();
           JButton button = new JButton();
           button.addActionListener(new ActionListener(){
               public void actionPerformed(ActionEvent e){
                   controlFrame.setVisible(false);
                }
           }
           content.add(button); 
           f.add(content);
           f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
           f.setVisible(true);
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-19
      • 2013-03-09
      • 2014-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      相关资源
      最近更新 更多