私は今、Java GUIの基礎を学んでいます。私は本当に説明できないこの奇妙な状況を抱えています。
シンプルなJFrameを構築するGUIクラスがあります。.setVisible(true)
コンストラクター内で使用するとすべて正常に動作し、外部で使用すると何も読み込まれません(ウィンドウは表示されますが、ボタンとそうでないものは表示されません)。
なぜこうなった ?
public class GUI extends JFrame {
private JTextField humanYears_TextField = new JTextField(3);
private JTextField dogYears_TextField = new JTextField(3);
private JButton convert_Button = new JButton("Convert");
private JLabel greeting = new JLabel ("Dog years to Human years!");
public GUI () {
JFrame window = new JFrame();
JPanel content = new JPanel();
content.setLayout(new FlowLayout());
content.add(this.greeting);
content.add(new JLabel("Dog Years: "));
content.add(this.dogYears_TextField);
content.add(this.convert_Button);
content.add(new JLabel("Human Years: "));
content.add(this.humanYears_TextField);
window.setContentPane(content);
pack(); // aplica contentPane-ul
window.setLocationRelativeTo(null);
window.setTitle("Dog Year Converter");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setVisible(true); // IF IT'S HERE IT WORKS
}
}
public static void main(String[] args) {
GUI dogYears = new GUI();
//dogYears.setVisible(true); // IF IT'S HERE
//NOTHING EXCEPT THE WINDOW LOADS
}
なぜこうなった ?
この例では問題ありませんが、ボタンなどをクリックした場合にのみウィンドウを表示したい場合はどうすればよいでしょうか?