Java Swing:仅在调整大小后才使用标签和字段apper

时间:2019-06-16 03:26:26

标签: java swing awt

我想用几个按钮和文本字段创建一个简单的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();
    }
}

1 个答案:

答案 0 :(得分:1)

在将面板添加到框架后,必须在行上设置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);
}

希望这会有所帮助。 干杯:)