Включая более двух панелей в JFrame? - PullRequest
4 голосов
/ 27 марта 2010

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

Может ли сообщество помочь привести пример реализации этого или направить меня к хорошему учебнику или руководству, касающемуся наших потребностей в Java Swing?

Ответы [ 3 ]

8 голосов
/ 27 марта 2010

При условии, что вы хотите добавить две панели в один кадр:

Установите макет для родительского JFrame и добавьте две панели. Что-то вроде следующего

JFrame frame = new JFrame();
//frame.setLayout(); - Set any layout here, default will be the form layout
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
frame.add(panel1);
frame.add(panel2);

Если вы хотите добавить одну панель поверх другой

JFrame frame = new JFrame();
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
frame.add(panel1);
panel1.add(panel2);

Нет ограничений на количество панелей, добавляемых в JFrame. Вы должны понимать, что все они являются контейнерами, если смотреть на более высокий уровень.

2 голосов
/ 17 февраля 2013

// вы также можете использовать макет карты, который позволяет добавить несколько панелей карт на главной панели.

CardLayout cl;
JPanel main,one,two,three;
JButton button1,button2;

cl = new CardLayout();
main.setLayout(cl);

main.add(one,"1");
main.add(two,"2");
main.add(three,"3");

cl.show(main,"1");

public void actionPerformed(ActionEvent e){
 if(e.getSource() == button1)
     cl.show(main,"2");
 else if(e.getSource() == button2)
     cl.show(main,"3");
}
2 голосов
/ 27 марта 2010

, если вы хотите, чтобы каждый из фреймов / панелей был одинакового размера, используйте GridLayout с сеткой 1 (столбец) и 2 (строки)

Frame myFrame;  
GridLayout myLayout = new GridLayout(2,1);  

myFrame.setLayout(myLayout);  

Panel p1;  
Panel p2;  

myFrame.add(p1);
myFrame.add(p2);

, если панели имеют другой размер, используйтеBorderLayout .... установите верхнюю рамку на "север", а нижнюю на "юг" или "центр"

Frame myFrame;  

myFrame.setLayout(new BorderLayout() );  

Panel p1;  
Panel p2;  

myFrame.add(p1, BorderLayout.NORTH);  
myFrame.add(p2, BorderLayout.CENTER);  
...