2011-02-13 4 views
2

이름을 나타내는 텍스트 필드와 등록 유형의 콤보 박스가 있습니다. 그런 다음 옆에 확인란이 있지만 다른 두 필드 아래에 있어야합니다. 여기에 제가 코딩 한 내용이 있습니다 :Swing의 텍스트 입력란 아래에 내 체크 박스를 삽입하는 방법은 무엇입니까?

public RegPanel() 
    { 
     //create a new panel 
     new GridLayout(2,1); 
     //create one of two subpanels 
     subPanel = new JPanel(new FlowLayout()); 
     //create a textfield 
     regTextField = new JTextField(20); 
     //create a combobox and don't let anyone add to it 
     regComboBox = new JComboBox(regOptions); 
     //create a border for the subpanel  
     subPanel.setBorder(BorderFactory.createTitledBorder("Registrant's Name & Type")); 
     //add regTypePanel and regBox to the panel  
     subPanel.add(regTextField); 
     subPanel.add(regComboBox); 
     //create a second subpanel with a flowlayout 
     subPanel2 = new JPanel(new FlowLayout()); 
     //create a checkbox 
     regCheckBox = new JCheckBox("Dinner and Keynote Speech"); 
     subPanel2.add(regCheckBox); 
     //add the subpanels to the main panel 
     add(subPanel); 
     add(subPanel2); 
    } 

내가 누락 된 아이디어가 있습니까? 진절머리 나는 레이아웃에 대해 미안하다. 나는보기를 수정하는 방법을 알 수 없다.

그래서 GridLayout을 올바르게 설정하지 않았다는 것을 알았 기 때문에이를 "setLayout (new GridLayout (2,1));으로 변경했습니다. 이제 내 GUI에서 완전히 다른 모든 위치를 망쳤습니다. 당신이 setLayout(...)에서 사용하지 않는 요소.

답변

2
어쨌든

new GridLayout(...)는 아무것도 할 수 없습니다.

을 당신은 수직 정렬에 구성 요소가 대신 GridLayout과의 Box.createVerticalBox() (sample)를 사용하여 시도 할 수 있습니다.

0

또한 당신에게 BorderLayout을 사용하여 당신이 nes임을 알고 싶을 수도 있습니다. 다른 레이아웃에서 다른 레이아웃을 사용하여 다른 효과를 얻을 수 있습니다.

귀하의 경우에는
1

, 당신은

  • RegPanel (이 레이아웃?)를 사용하는
    • 서브 패널 (FlowLayout의)를
      • regTextField
      • regComboBox
    • subPanel2 (FlowLayout의)
        ,
      • regCheckBox

주 RegPanel가 어떤 레이아웃을 가지고 있습니까? RegPanel이 JPanel의 서브 클래스 인 경우 기본 JPanel 레이아웃을 갖습니다.이 레이아웃은 FlowLayout입니다. 따라서 RegPanel은 서로 다른 두 개의 하위 패널을 표시합니다.이 하위 패널은 모든 구성 요소가있는 패널이 하나 뿐인 것처럼 비슷합니다. 따라서 RegPanel에는 LayoutManager가 필요합니다. GridLayout (2,1)은 괜찮습니다 (두 행의 구성 요소를 정렬하지 않으려는 경우). my current project에서


, 나는 오직 GroupLayout (떨어져 하나 가끔의 BorderLayout에서) 사용하고 있습니다. (코드를 작성하고 읽기 쉽게하기 위해 래퍼 클래스에 익숙해지기까지는 약간의 시간이 걸리지 만, 그러한 폼의 경우, 빌트인 레이아웃 관리자로 제한되는 경우 이상적으로 보입니다.)

0

다목적 ​​레이아웃 관리자로 여기 MigLayout을 언급했습니다. 매우 유연하고 사용하기 쉽습니다.

관련 문제