关闭JFrame后在main()中执行操作

时间:2013-01-13 19:35:10

标签: java swing execution windowlistener

我很抱歉,因为我相信这个问题已经被提出过了,但是没有一个答案能真正帮助我。 我有一个带gui的类,它包含一个带有几个文本字段和按钮的JFrame。这是主要的()我试图开始工作:

Gui interface1 = new Gui();
interface1.setSize(200,200);
interface1.setVisible(true);
//hold main execution
//wait for the pressed button in gui
//close the jframe
//proceed with main()
call_some_functions();

我尝试将默认关闭操作设置为HIDE_ON_CLOSE,但这似乎不是我想要的。我使用框架,我需要main()很长一段时间才能活着。 基本上,我需要jframe在用户输入和更新参数的时候保持main(),然后关闭自己而不终止进程并继续使用main(),好像什么都没发生一样。 提前感谢您的帮助。

2 个答案:

答案 0 :(得分:5)

使用JDialog代替JFrame并使用JDialog JDialog#setModal

制作true模式

有关详细信息,请参阅How to use dialogs

答案 1 :(得分:0)

使用:

frame.setDefaultCloseOperation(frame.HIDE_ON_CLOSE);

EG:

import javax.swing.JFrame;
import javax.swing.JTextField;



public class TestFrame {
public static void main(String aa[])
{JFrame frame =new JFrame();
 JTextField field=new JTextField("hello buddy..nuthin happnd");
 frame.setDefaultCloseOperation(frame.HIDE_ON_CLOSE);
 frame.add(field);
 frame.pack();
 frame.setVisible(true);
 }

根据您的需要更新:

import javax.swing.JFrame;
import javax.swing.JTextField;



public class TestFrame {
public static void main(String aa[])
{
JFrame frame =new JFrame();
JTextField field=new JTextField("hello buddy..nuthin happnd");
 frame.setDefaultCloseOperation(frame.HIDE_ON_CLOSE);
frame.add(field);
frame.pack();
frame.setVisible(true);


 frame. addComponentListener(new java.awt.event.ComponentAdapter() {
        public void componentHidden(java.awt.event.ComponentEvent evt) {
            formComponentHidden(evt);
        }
    });
 }

 private static void formComponentHidden(java.awt.event.ComponentEvent evt) {
   somefunction();
  }
 public static void somefunction()
 {
  System.out.println("hii!! i am hidden!!");

  }
 }