1

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

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(),就好像什么都没发生一样。提前感谢您的帮助。

4

2 回答 2

5

使用 aJDialog代替JFrame并制作JDialog模态,使用JDialog#setModaltotrue

有关更多信息,请参阅如何使用对话框

于 2013-01-13T19:46:09.807 回答
0

利用 :

frame.setDefaultCloseOperation(frame.HIDE_ON_CLOSE);

例如:

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!!");

  }
 }
于 2013-01-13T19:46:44.520 回答