Java 单击JButton后关闭jFrame

Java 单击JButton后关闭jFrame,java,swing,jbutton,Java,Swing,Jbutton,我在NetBeans中设计了两个jframe 当我单击“规则”按钮(即放在JFrame1上)时,它会打开第二个JFrame(但JFrame2会在JFrame1的窗口上打开,这是我不想要的)。 在第二个JFrame中有一个“close”按钮。但当我点击这个按钮时,我希望JFrame1被打开,它也在工作,但JFrame2实际上并没有关闭,JFrame1出现在JFrame2上 简而言之,主要形式是JFrame1。当我从JFrame1中单击“规则”按钮时,它会在JFrame1上打开JFrame2,而在J

我在NetBeans中设计了两个jframe

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

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

场景是JFframe1->JFrame2->JFrame1


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

假设您的按钮有一个actionListener,在单击放入的“规则按钮”后:


然后在点击“规则按钮”后,根据相反的反应对其进行重新排序

假设您的按钮有一个actionListener:


然后针对相反的反应重新考虑它们

类似的内容应该在创建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();
}

在创建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设置为hidden,当您点击“Cancel”时,它将关闭第二个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

无论如何我都不是专家,但是我也遇到了这个问题。如果您将第二个JFrame设置为hidden,当您点击“Cancel”时,它将关闭第二个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
称为
RegScreen
Frame2
称为
MainScreen
):

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

这对我来说很有效(
Frame1
调用
Regscreen
Frame2
调用
MainScreen
):


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

如果这不起作用,请尝试此操作

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

如果这不起作用,试试这个

JFrame1.dispose();  //Remove JFrame 1
      JFrame2.setVisible(true) //Show other frame
JFrame2.setVisible(true);
this.dispose();
  • 使用main()方法创建main类
  • 让具有main()方法的main类封装JFrame1和JFrame2引用变量。除非有特定原因,否则不要让JFrame1或JFrame2包含main()
  • 在一个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
        }
    
  • 使用main()方法创建main类
  • 让具有main()方法的main类封装JFrame1和JFrame2引用变量。除非有特定原因,否则不要让JFrame1或JFrame2包含main()
  • 在一个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
        }
    

    如果您已经有了actionListener,您应该添加以下内容:

    JFrame1.dispose();//这将关闭框架

    JFrame1
    是框架的名称。 如果要打开另一个框架,请添加以下内容:


    JFrame2.setVisible(true);//这将使另一个框架可见。如果您已经有了actionListener,您应该添加以下内容:

    JFrame1.dispose();//这将关闭框架

    JFrame1
    是框架的名称。 如果要打开另一个框架,请添加以下内容:


    JFrame2.setVisible(true);//这将使另一个框架可见

    在要关闭的框架上使用
    dispose()
    方法。但是不推荐使用多个<代码> jFrase>代码,而是查看多个对话框或内部帧。使用帧进行表单切换本质上是非常糟糕的设计。我会考虑使用<代码> jPATA//C>作为应用程序的主要容器,并使用<代码> JTabEddieNe>代码> >或代码> CARDFrase允许用户在它们之间切换-imHo……在要关闭的框架上使用<代码>处理()/<代码>方法。但是不推荐使用多个<代码> jFrase>代码,而是查看多个对话框或内部帧。使用帧进行表单切换本质上是非常糟糕的设计。我会考虑使用<代码> jPARTA/COS> S作为应用程序的主要容器,使用<代码> JTabEddieNe>代码> >或代码>卡布局>代码>允许用户在它们之间切换……而不只是给出代码,还试图解释为什么代码需要在构造函数/方法上。我忘了解释应该在哪里使用CloseFrame方法。现在已经解释了。与其只给出代码,还不如解释一下为什么这个代码需要在构造函数/方法上。对不起,我忘了解释CloseFrame方法应该在哪里。现在解释清楚了。