2010-03-27 7 views
4

동일한 JFrame에 3 개 이상의 패널을 포함하는 데 문제가있는 프로젝트를 진행 중입니다. 한 패널이 다른 패널 위에 놓이는 것이 좋습니다.JFrame에 3 개 이상의 패널 포함?

이 커뮤니티를 구현하는 데 커뮤니티가 도움이 될 수 있습니까? 아니면 Java Swing 요구와 관련된 좋은 가이드 또는 가이드를 참조 할 수 있습니까?

가 부모 JFrame의 레이아웃을 설정하고 두 개의 패널을 추가

+0

프레임에서 어떤 레이아웃 관리자 (FlowLayout, BorderLayout, GridLayout, GroupLayout 등)를 사용하고 있습니까? –

답변

7

단일 프레임에 추가 된 두 개의 패널을 원하는 가정. 당신이 JFrame의에 추가 할 패널의 수에는 제한이 없습니다 다른

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

을 통해 하나 개의 패널을 추가 할 가정하면 다음

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); 

비슷 해요. 높은 수준에서 보았을 때 그들은 모두 용기라는 것을 이해해야합니다.

+0

하지만 문제는 기본 레이아웃이 "FlowLayout"이며 원하는 결과를 얻지 못한다는 것입니다. 좋아요. 게시물의 첫 번째 부분을 약간 잘못 읽었지 만, 여기서 원하는 것은 아주 구체적인 레이아웃이 필요합니다. "레이아웃 설정" – Wintermut3

2

당신은 프레임/패널 같은 크기, 1 (열)과 2의 격자로 GridLayout과를 사용 (행)

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); 
2

을 설정, 그 여러 카드 패널을 추가 할 수 있습니다 메인 패널.

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"); 
}