2015-07-26 2 views
1

Я пытаюсь в течение довольно долгого времени найти, что проблема, но безрезультатно, ее довольно простая, BorderLayout не добавит кнопку в нужное место на экран (юг).JPanel не добавляет компоненты 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, а не в нижней части, как я и ожидал.

+0

'public class panelClass расширяет JPanel {' Не расширяйте компоненты, не изменяя существующие функции. Пожалуйста, изучите общую номенклатуру Java (соглашения об именах - например, 'EveryWordUpperCaseClass',' firstWordLowerCaseMethod() ',' firstWordLowerCaseAttribute', если это не 'UPPER_CASE_CONSTANT') и использовать ее последовательно. –

ответ

3

этой линия проблема

add(secondaryPanel); 

по умолчанию расположения JPanel является flow layout .so при добавлении вторичной панели к главной панели вторичной панели добавлена ​​в верхнее среднее положение основной panel.that почему вы видите кнопку шоу в верхнем среднем части экрана, как обычный flowLayout .Если вы установите цвет фона на вторичной панели вы можете ясно видеть проблему самостоятельно

добавить соответствующий макет в главной панели .for например

setLayout(new BorderLayout()); 
add(secondaryPanel,BorderLayout.CENTER);