Я только начинаю разбираться с программированием GUI на Java.Вот тривиальная программа (из "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);
}
}
Этопростая программа, когда она скомпилирована и запущена, откроет окно с кнопкой на ней.
Я не понимаю, что происходит с потоком выполнения.Когда я запускаю эту программу, запускается статический метод main класса Test
, все команды в main()
выполняются - так почему же процесс не завершается после появления окна?Почему я все еще сижу на чем-то похожем на бесконечный цикл?Что такое цикл?
Если я добавлю строку
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
, то я нахожу результат еще более непонятным.Теперь, конечно, программа завершается, когда я закрываю окно.Но опять же я не понимаю почему.Кадр будет в стеке, но я не вижу, где находится поток программы, и просто наличие чего-то в стеке недостаточно, чтобы поддерживать программу в живых, не так ли?Я упускаю что-то фундаментальное, что, насколько я вижу, не рассматривается в книге, которую я читаю.Я слегка удивлен этим - «Head first Java» до сих пор был очень хорош в том, чтобы указывать на тонкости и объяснять, что происходит на самом деле, но, похоже, не решает эту проблему (по крайней мере,не то, что я заметил).