2013-05-01 4 views
0

Возможно ли иметь панель внутри панели одним способом в Java?JPanel внутри JPanel

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

Если это невозможно, то как бы вы создать JPanel, скажем LeftPanel, и добавить еще JPanel в LeftPanel?

Любая помощь с источниками и четкое объяснение было бы потрясающе, потому что я новичок на Java, а иногда, когда что-то, что вы говорите, может быть очевидно для вас и для всех CS-jocks, но не для меня.

ответ

5

Что вы спросите, возможно, но я думаю, что вы узнаете больше, прочитав учебник по менеджерам макетов, чем дать ответ. Пожалуйста, прочитайте на менеджеров компоновки и выложив компонентов :)

http://docs.oracle.com/javase/tutorial/uiswing/layout/index.html

+1

менеджеров компоновки, безусловно, путь. –

+0

+1 для менеджеров макетов! – MadProgrammer

3

Основная предпосылка будет следовать той же работы потока для добавления других компонентов к панели ...

Вы могли бы сделать что-то вроде ...

public JPanel createMasterPane() { 

    JPanel master = new JPanel(new BorderLayout()); 

    JPanel leftPane = new JPanel(); 
    leftPane.add(new JLabel("Left")); 

    master.add(leftPane, BorderLayout.WEST); 

    JPanel rightPanel = new JPanel(); 
    rightPanel.add(new JLabel("Right")); 
    master.add(rightPanel, BorderLayout.EAST); 

    return master; 

} 

лучшее решение (ИМХО) было бы выделить отдельные сферы ответственности и сделать что-то больше, как это ...

public JPanel createLeftPane() { 
    JPanel leftPane = new JPanel(); 
    leftPane.add(new JLabel("Left")); 
    return leftPane; 
} 

public JPanel createRightPane() { 
    JPanel rightPanel = new JPanel(); 
    rightPanel.add(new JLabel("Right")); 
    return rightPanel; 
} 

public JPanel createMasterPane() { 
    JPanel master = new JPanel(new BorderLayout()); 

    master.add(createLeftPane(), BorderLayout.WEST); 
    master.add(createRightPane(), BorderLayout.EAST); 

    return master; 
} 

Вы хотели бы провести некоторое время, просматривая How to create a UI with Swing для получения более подробной информации ...

Смежные вопросы