Класс расширяет JPanel,
public void createDisplay(){
frame = new JFrame();
frame.setTitle(title);
frame.setSize(new Dimension(width, height));
frame.setVisible(true);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setPreferredSize(new Dimension(width, height));
this.setMaximumSize(new Dimension(width, height));
this.setMinimumSize(new Dimension(width, height));
this.setLayout(null); //have tried default and BorderLayout
this.setSize(new Dimension(width, height));
this.setBounds(0, 0, width, height);
//basically trying everything
frame.add(this);
frame.pack();
}
при запуске этот код работает нормально, и JPanel полностью покрывает размер родительского фрейма
Однако моя программа позже пытается добавить новый JPanel в расширение JPanel класса с помощью:
public void gameOverWindow(){ ;
JPanel panel = new JPanel(new BorderLayout());
panel.setPreferredSize(new Dimension(200, 100));
JLabel label = new JLabel("Game Over");
label.setPreferredSize(new Dimension(40, 15));
//trying setPosition also doesn't work with BorderLayout or FlowLayout
JButton button_01 = new JButton("new");
button_01.setPreferredSize(new Dimension(100, 10));
JButton button_02 = new JButton("exit");
button_02.setPreferredSize(new Dimension(100, 10));
panel.add(label, BorderLayout.NORTH);
panel.add(button_01, BorderLayout.WEST);
panel.add(button_02, BorderLayout.EAST);
this.add(panel);
this.revalidate();
}
Этот новый JPanel появляется с содержимым в правильном формате BorderLayout, однако сам JPanel останется в верхнем центре расширенного JPanel, я знаю, что это потому, что для Layout по умолчанию установлено FlowLayout, однако установка BorderLayout будет просто заставьте панель занимать весь экран. Установка нулевого макета полностью разрушает рамку, и ничего не появляется, кроме кнопок «Свернуть» и «Закрыть» рамки. Попытка установить позицию или границы этого JPanel также не работает ни с каким макетом. Я читал много других сообщений в Интернете об этом, но все они, кажется, отличаются и становятся запутанными, как мне получить контроль над положением моей новой JPanel?