单击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
称为RegScreen
和Frame2
称为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();
- 有一个MainClass与main()方法。
- 让具有main()方法的MainClass封装您的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 }