我现在正在学习 java GUI 的基础知识。我有这种奇怪的情况,我无法真正解释。
我有一个 GUI 类,我在其中构建了一个简单的 JFrame。如果我.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
}
为什么会这样?
在此示例中,这无关紧要,但是如果我想让窗口仅在单击按钮或其他内容时才可见怎么办?