我想创建一个简单的 Java Swing 应用程序,其中包含几个按钮和文本字段。然而,在我启动程序后,我看到的只是一个空窗口。仅当我手动更改窗口大小时,所有元素才会出现。我怎样才能改变它并使所有元素立即出现?
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.*;
class JavaLesson extends JFrame{
public static void main(String[] args){
new JavaLesson();
}
public JavaLesson(){
this.setSize(400,400);
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension dim = tk.getScreenSize();
int xPos = (dim.width / 2) - (this.getWidth() / 2);
int yPos = (dim.height / 2) - (this.getHeight() / 2);
this.setLocation(xPos,yPos);
this.setTitle("My app");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
JPanel panel = new JPanel();
JLabel label1 = new JLabel("This is label");
JButton button1 = new JButton("Send");
JTextField textField1 = new JTextField("Type here",7);
panel.add(label1);
panel.add(button1);
panel.add(textField1);
this.add(panel);
textField1.requestFocus();
}
}
最佳答案
您必须在将面板添加到框架后在线设置 this.setVisible(true) ,这样做,它将显示您在框架中添加的所有组件。
尝试一下,看看是否有效。
public JavaLesson(){
this.setSize(400,400);
..
..
JPanel panel = new JPanel();
JLabel label1 = new JLabel("This is label");
JButton button1 = new JButton("Send");
JTextField textField1 = new JTextField("Type here",7);
panel.add(label1);
panel.add(button1);
panel.add(textField1);
this.add(panel);
this.setVisible(true);
}
希望这有帮助。 干杯:)
关于Java Swing : labels and fields apper only after resizing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56615833/