2013-02-27 3 views
0

이 형식으로 코드를 가지고 있지만 jpanels이 설정된 크기를 듣지 않습니다. 코드를 실행할 때 세 패널 모두 같은 크기입니다. 그들을 조정할 방법이 있습니까? ?크기를 조정하기 위해 JPanels 조정

JPanel mainpanel = new JPanel(mainPanel,BoxLayout.Y_AXIS); 
JPanel tablepanel1 = new JPanel(); 
tablepanel1.setSize(900,400); 
JPanel selectionpanel = new JPanel(new GridBagLayout()); 
selectionpanel.setSize(900,100); 
JPanel tablepanel2 = new JPanel(); 
tablepanel2.setSize(900,400); 

mainpanel.add(tablepanel1); 
mainpanel.add(selectionpanel); 
mainpanel.add(tablepanel2); 

frame.add(mainpanel); 
frame.setSize(900,900); 
+0

Swing에서 절대 위치 지정을 원하면 'mainPanel'에 대한 레이아웃 관리자를 사용할 수 없다고 말하고 싶습니다. http://docs.oracle.com/javase/tutorial/uiswing/layout/none.html – millimoose

+0

'setSize' 대신'setPreferredSize'를 사용하십시오. 또한,'BorderLayout'에는'Y_AXIS'라는 멤버가 없습니다. 아마도'BoxLayout'을 의미할까요? –

답변

1

mainpanel에 대한 BoxLayout를 사용하는 의미입니까?

JPanel mainpanel = new JPanel(); 
mainpanel.setLayout(new BoxLayout(mainpanel, BoxLayout.Y_AXIS)); 

이 레이아웃 매니저는 적절한 사이즈보다는 부품 크기를 수신합니다. 가장 좋은 방법은 getPreferredSize을 무시하는 것입니다

JPanel selectionpanel = new JPanel() { 
    @Override 
    public Dimension getPreferredSize() { 
     return new Dimension(900, 400); 
    } 
}; 
또한

더는 프레임 크기를 설정하기보다는 JFrame#pack을 사용합니다.

+0

죄송합니다, 네, 그것은 boxLayout입니다,하지만 당신이 제안한 방법을 사용하여 시도했지만 변화는 없습니다. jframe에 크기를 설정해야합니다. 처음에는 프레임이 메뉴 모음과 함께 비어 있고 작업이 선택되면 패널이 추가되고 프레임의 크기가 커지기 때문입니다. – vijay

+0

테스트를 거쳤습니다. 'getPreferredSize'를 3 개의 패널에 오버라이드 시켰습니까 :'tablepanel1','tablepanel2' &'selectionpanel'? – Reimeus

관련 문제