Java swing: надписи и поля появляются только после изменения размера - PullRequest
0 голосов
/ 16 июня 2019

Я хочу создать простое приложение 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 Ответ

1 голос
/ 16 июня 2019

Вы должны установить 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);
}

Надеюсь, это поможет. Приветствия:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...