我刚刚开始掌握java中的GUI编程。这是一个琐碎的程序(来自 O'Reilly 的“Head First Java”),表面上看起来很容易理解,但它有一个方面我不理解。
import javax.swing.*;
public class Test {
public static void main(String[] args) {
JFrame frame=new JFrame();
JButton button = new JButton("click me");
frame.getContentPane().add(button);
frame.setSize(300,300);
frame.setVisible(true);
}
}
这个简单的程序在编译并运行后会打开一个带有按钮的窗口。
我不明白执行流程发生了什么。当我运行这个程序时,Test
类的静态main方法运行,里面的所有命令main()
都被执行了——那么为什么窗口出现后进程没有终止呢?为什么我仍然坐在看起来像无限循环的地方?什么是循环?
如果我添加该行
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
然后我发现结果更加难以理解。现在,当然,一旦我关闭了窗口,程序就会终止。但我又不明白为什么。框架将在堆栈上,但我看不到程序流在哪里,并且堆栈上的某些东西的存在不足以使程序保持活力,肯定吗?我错过了一些基本的东西,据我所知,我正在阅读的书中没有涵盖这些内容。我对此感到有些惊讶——到目前为止,“Head first Java”在指出细微之处和解释真正发生的事情方面做得非常好,但似乎没有解决这一点(至少我没有发现)。