2013-04-18 4 views
0

JFrame에 5 개의 버튼을 배치하려고합니다. 4 개의 버튼은 첫 번째 행에 있어야하고 다섯 번째 행은 두 번째 행에 있어야합니다. 그러나 여기에 모든 버튼이 한 행에 나타나고 다섯 번째 버튼의 절반이 패널 밖으로 나옵니다. 그런데 frame.pack()을 사용하면; 내 프레임이 예상했던 것보다 작아진다. 프레임의 크기를 변경하고 싶지 않습니다. 나는 두 번째 줄에 다섯 번째 것을 찾고 싶다.JPanel에서 구성 요소를 배치/배치하는 방법은 무엇입니까?

import java.awt.GridBagLayout; 
import java.awt.GridLayout; 

import javax.swing.*; 


public class test { 

    public static void main(String[] args) { 


     JFrame frame = new JFrame(); 
     frame.setBounds(100, 100, 529, 300); 
     frame.getContentPane().setLayout(new GridLayout(1, 0, 0, 0)); 


     JPanel panel = new JPanel(); 
     frame.getContentPane().add(panel); 
     panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS)); 


     JButton btnNewButton_4 = new JButton("New button"); 
     panel.add(btnNewButton_4); 

     JButton btnNewButton_3 = new JButton("New button"); 
     panel.add(btnNewButton_3); 

     JButton btnNewButton = new JButton("New button"); 
     panel.add(btnNewButton); 

     JButton btnNewButton_1 = new JButton("New button"); 
     panel.add(btnNewButton_1); 

     JButton btnNewButton_2 = new JButton("New button"); 
     panel.add(btnNewButton_2); 


     frame.setVisible(true); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 


    } 

} 
+1

"찾기"란 실제로 "위치 설정"을 의미합니까? 제가 처음으로 당신의 책을 읽을 때, 당신이 그 책을 찾으려고한다고 생각했습니다. – splungebob

답변

3

개의 버튼은 첫 번째 행에 있어야하고, 다섯 번째는 번째 행에 있어야한다.

  • 표준 및 예약 JPanel의 오라클 튜토리얼에 대한 How to use Layout Managers

  • 사용 GridLayout (two rows)의 예는 있지만, 모든 JButton의 사용 GridBagLayout 같은 차원

  • 이있을 것이다, 다음 JButton의 각 것 다른 크기 또는 같지 않음

  • 보이지 않는 JComponents 또는 비어 있음 (panel.setMinimumSize를 사용하려고 크기에 대한

    차원 : JLabel의는

1

레이아웃 관리자로 null을 사용하고 구성 요소를 스스로 배치합니다. 하위 관리자는 사실이 아니다 또는 대부분의 시간 동안 단지 대신

을 죽일 윈도우 크기를 조정할 때 컴포넌트 릴레이 될 또는 애플릿 등

를하지만의 최종 크기를 모르는 원하는 경우에 잘 작동합니다 을 사용하여 픽셀별로 그리드에 구성 요소 배치 setBounds (x, y, width, height); 예 :

JFrame frame = new JFrame(); 
    frame.setBounds(100, 100, 529, 300); 
    frame.getContentPane().setLayout(null);//over ride default 
    Container c = frame.getContentPane(); 


    JButton btnNewButton_4 = new JButton("New button"); 
    c.add(btnNewButton_4); 
    c.seBounds(4,10,40,25); 

    JButton btnNewButton_3 = new JButton("New button 3"); 
    c.add(btnNewButton_3); 
    c.seBounds(40,10,40,25);//...etc 

샘플

+0

'널 (null)'레이아웃을 제안하지 마십시오. 크기를 조정할 수없는 구성 요소는 [예] (http://stackoverflow.com/a/12532237/230513)의 일부 플랫폼에서보기가 거의 확실합니다. – trashgod

+0

이 그 예입니다. 다른 장소에서 성공적으로 사용되었습니다. 샘플 업데이트 – tgkprog