JPanel не добавляет компоненты BorderLayout, как ожидалось
Я довольно долго пытаюсь найти, в чем проблема, но безрезультатно, на самом деле это довольно просто, BorderLayout
не добавит кнопку в правильное место на экране (Юг).
Я не хочу добавлять кнопку в JPanel
Сам я хочу сделать дополнительную панель, добавить эту панель на главную панель и кнопку на дополнительную панель, вот простой код:
public class panelClass extends JPanel{
JPanel secondaryPanel = new JPanel();
JButton btn = new JButton("Test");
public panelClass(){
add(secondaryPanel);
secondaryPanel.setLayout(new BorderLayout());
secondaryPanel.add(btn, BorderLayout.SOUTH);
}}
Кнопка отображается в верхней средней части экрана, как обычнаяFlowLayout
вместо этого в нижней средней части, как я ожидал.
1 ответ
Эта линия - проблема
add(secondaryPanel);
макет jpanel по умолчанию flow layout
. Так, когда вы добавляете вторичную панель на основную панель, вторичная панель добавляется в верхнюю среднюю позицию главной панели. Вот почему вы видите, что кнопка появляется в верхней средней части экрана, как обычная flowLayout
.Если вы установили цвет фона для вторичной панели, вы можете ясно увидеть проблему самостоятельно.
добавить соответствующий макет на главной панели. Например,
setLayout(new BorderLayout());
add(secondaryPanel,BorderLayout.CENTER);