Java 单击JButton后关闭jFrame
我在NetBeans中设计了两个jframe 当我单击“规则”按钮(即放在JFrame1上)时,它会打开第二个JFrame(但JFrame2会在JFrame1的窗口上打开,这是我不想要的)。 在第二个JFrame中有一个“close”按钮。但当我点击这个按钮时,我希望JFrame1被打开,它也在工作,但JFrame2实际上并没有关闭,JFrame1出现在JFrame2上 简而言之,主要形式是JFrame1。当我从JFrame1中单击“规则”按钮时,它会在JFrame1上打开JFrame2,而在JFrame2中,当它被单击时,会有一个“关闭”按钮,主窗体(即JFrame1)会启动,但会在JFrame2上启动 场景是JFframe1->JFrame2->JFrame1Java 单击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
现在我的问题是,在单击“规则”按钮后,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();
//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
}
//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方法应该在哪里。现在解释清楚了。