JPanel поверх другой JPanel

Я использую JPanels некоторое время и теперь хочу разместить JPanel поверх другого JPanel.

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

Пример

JPanel bottomPanel = new JPanel();      # Set as bottom panel
JPanel topPanel = new JPanel();         # Set as top panel
JPanel sidePanel = new JPanel();        # Don't have to set
JPanel anotherSidePanel = new JPanel(); # Don't have to set

Если это невозможно, какое лучшее решение для этого, спасибо.


person Community    schedule 04.12.2016    source источник
comment
Предоставьте иллюстрацию в формате ASCII или простой рисунок предполагаемой компоновки графического интерфейса в минимальном размере и, если размер можно изменить, с большей шириной и высотой.   -  person Andrew Thompson    schedule 04.12.2016


Ответы (2)


Вы можете сделать так, чтобы главная панель использовала BorderLayout.

Затем вы можете сделать что-то вроде:

mainPanel.add(leftSide, BorderLayout.LINE_START);
mainPanel.add(rightSide, BorderLayout.LINE_END);
JLayeredPane lp = new JLayeredPane();
mainPanel.add(lp, BorderLayout.CENTER);
person camickr    schedule 04.12.2016
comment
Ничего себе, никогда не знал, что есть такая вещь, как JLayeredPane, Спасибо, это сработало! - person ; 04.12.2016

Похоже, вам нужен менеджер компоновки. Есть несколько разных, которые подходят для разных нужд. Внизу этого поста есть ссылка.

Мой личный фаворит — GridLayout. Итак, что вы хотите сделать, вы можете сделать это:

JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2, 1));
//the first number is the number of rows, the second is the number of columns

JPanel topPanel = new JPanel();
JPanel bottomPanel = new JPanel();
panel.add(topPanel);
panel.add(bottomPanel);

Это сделает то, что вы хотите.

Если вы хотите узнать о них больше, вот ссылка: Документы Oracle на Менеджеры макетов

person ds777fighter    schedule 04.12.2016