单击JButton后关闭jFrame

我在NetBeans中设计了两个JFrame。

当我单击“规则”按钮(即放置在JFrame1上)时,它会打开第二个JFrame(但是JFrame2会打开JFrame1的窗口,这就是我不想要的)。 在第二个JFrame中有一个“关闭”按钮。 但是,当我单击此按钮时,我希望打开JFrame1并且它也正常工作,但JFrame2实际上没有关闭,JFrame1正在JFrame2上出现。

简而言之,主要forms是JFrame1。 当我点击JFrame1中的“规则”按钮时,它会在JFrame1上打开JFrame2,而在JFrame2中,当点击主窗体(即JFrame1)时,会有一个“关闭”按钮,但它会通过JFrame2启动。

场景是JFframe1 – > JFrame2 – > JFrame1

现在我的问题是在点击“规则”按钮后,应关闭JFrame1并在屏幕上显示JFrame2,反之亦然。

假设你的按钮有一个actionListener,点击“规则按钮”后放入:

  JFrame1.dispose(); //Remove JFrame 1 JFrame2.setVisible(true) //Show other frame 

然后尊重他们反对的反应

像这样的Somethig应该在创建JFrame2的构造函数或方法上:

 btnCancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //call another method in the same class which will close this Jframe CloseFrame(); } }); 

这是关闭JFrame2的方法

 public void CloseFrame(){ super.dispose(); } 

无论如何我不是专家,但是我也遇到了这个问题。 如果您将第二个JFrame设置为隐藏,当您点击“取消”时,它将关闭第二个JFrame。

 //this is the code for the "cancel" button action listener public void actionPerformed(ActionEvent e) { setVisible(false);//hides the second JFrame and returns to the primary 

这适用于我( Frame1称为RegScreenFrame2称为MainScreen ):

 RegScreen.this.setVisible(false); new MainScreen().setVisible(true); 

希望这有帮助:) Regscreen是在启动时打开的原始框架。

如果这不起作用,请尝试这样做

 JFrame1.dispose(); //Remove JFrame 1 JFrame2.setVisible(true) //Show other frame JFrame2.setVisible(true); this.dispose(); 
  1. 有一个MainClass与main()方法。
  2. 让具有main()方法的MainClass封装您的JFrame1和JFrame2引用变量。 除非您有特定原因,否则不要让JFrame1或JFrame2包含main()。
  3. 在其中一个JFrame对象中单击某些内容后,实例化/使另一个JFrame对象可见,并通过MainProgram.JFrame对象方法处置它自己。

例:

  //btn event inside 1st JFrame/window private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { MainProgram.openResultsForm(); //MainProgram opens 2nd window MainProgram.queryEntryForm.dispose(); //MainProgam closes this, //the 1st window }