从另一个JFrame点击按钮处理JFrame

时间:2015-04-12 22:59:06

标签: java swing jframe dispose

许多人可能知道,我是一个完整的Java新手。我已经尝试过研究这个(通过阅读StackOverflow上的其他帖子,谷歌搜索并询问一个不太喜欢java新手的朋友),但我无法弄明白。答案可能很简单,但我对此视而不见。我试图从不同的框架中处置JFrame

我的应用程序应该按如下方式运行:

  • 框架X有一个按钮,按下时:产生框架Y
  • 框架Y有一个按钮,按下时:产生框架Z
  • 框架Z有按钮,按下时:在放置框架Y和自身之前从框架Y执行方法。

获取框架Z以处置框架Y是我的大多数问题所在。 任何帮助是极大的赞赏。理想情况下,帮助将以这样的方式表达,即使是婴儿也能理解(因为这是我的Java理解水平)。

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

2 个答案:

答案 0 :(得分:2)

  
      
  • 框架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

  

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

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

答案 1 :(得分:0)

你可以在另一帧中保持对另一个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);
   }
}