Как сделать размер JPanel применимым к JFrame? - PullRequest
0 голосов
/ 02 августа 2020

У меня проблема с размером JPanel, не увеличивающим размер JFrame.

Вот мой код:

package pong;

import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Test {

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        
        JPanel p = new JPanel();
        p.setPreferredSize(new Dimension(500, 500));

        frame.add(p);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);
        frame.setVisible(true);
        
        frame.setLocationRelativeTo(null);
    }
}

Фрейм отображается с небольшой шириной или высотой вообще, даже если предпочтительный размер панели составляет 500 на 500 пикселей.

1 Ответ

2 голосов
/ 02 августа 2020

JFrame отображается с небольшой шириной или высотой,

Код должен быть:

frame.pack(); // added
frame.setVisible(true);

Метод pack() вызовет макет менеджер, используемый фреймом, и все компоненты Swing будут отображаться с их предпочтительным размером.

Кроме того, как правило, нет необходимости устанавливать предпочтительный размер панели вручную, поскольку вы будете добавлять компоненты к панели, и поэтому предпочтительный размер должен зависеть от компонентов, которые вы добавляете на панель.

Прочтите раздел из учебника Swing на Использование менеджеров макетов для получения дополнительной информации и примеров *. 1015 *

...