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
クラスの static main メソッドが実行され、すべてのコマンドmain()
が実行されます。では、ウィンドウが表示された後にプロセスが終了しないのはなぜですか? なぜ私はまだ無限ループのように見えるのですか? ループとは?
行を追加すると
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
そうなると、結果はさらに理解不能になります。もちろん、ウィンドウを閉じるとプログラムは終了します。しかし、やはり理由がわかりません。フレームはスタック上にありますが、プログラム フローがどこにあるのかわかりません。スタック上に何かが存在するだけでは、プログラムを存続させるのに十分ではありません。私が見る限り、私が読んでいる本ではカバーされていない基本的な何かが欠けています. 私はこれに少し驚いています -- 「Head first Java」はこれまで微妙な点を指摘し、実際に何が起こっているのかを説明するのに非常に優れていましたが、この点に対処していないようです (少なくとも私が見つけたものではありません)。 )。