Добавление нескольких панелей с разными размерами в одном кадре - PullRequest
0 голосов
/ 25 октября 2019

Я пытаюсь добавить больше панелей в свой фрейм, но программа, похоже, игнорирует все остальные панели, кроме первой, которую я добавил. Как мне добавить панели?

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

frame = new JFrame("Hey");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel mid = new JPanel(new GridLayout(7,7));
JPanel top = new JPanel();

frame.add(top);
frame.add(mid);
frame.pack();
frame.setVisible(true);

Программа игнорирует "topпанель, вместе с кнопками, которые я добавил к ней.

1 Ответ

1 голос
/ 25 октября 2019

Из документации JFrame :

На панели содержимого по умолчанию будет установлен менеджер BorderLayout.

Поэтому вам следует использовать BorderLayout регионов, чтобы добавить JPanels к панели содержимого JFrame следующим образом:

frame.add(top, BorderLayout.NORTH);
frame.add(mid, BorderLayout.CENTER);

В противном случае BorderLayout по умолчанию добавит все в область CENTER:

Для удобства BorderLayout интерпретирует отсутствие спецификации строки так же, как и константу CENTER:

Panel p2 = new Panel();
p2.setLayout(new BorderLayout());
p2.add(new TextArea());  // Same as p.add(new TextArea(), BorderLayout.CENTER);

, и вы увидите, что JPanel добавлен последним только потому, что:

Каждый регион может содержать не более одного компонента

...