2013-03-27 9 views
0

나는 lable과 두 개의 radiobutton이있는 jframe을 가지고 있습니다.스프링 레이아웃 사용 손 GUI 용

나는 스프링 레이아웃을 사용하지만, 페이지의 왼쪽 상단에 보이는 두 번째 라디오 버튼!

public class tester extends JFrame { 

public tester() { 
    add(create()); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setSize(400, 500); 
    setVisible(true); 
} 

public JPanel create() { 
    JPanel panel = new JPanel(); 
    ButtonGroup group = new ButtonGroup(); 
    JRadioButton r1 = new JRadioButton("Yes"); 
    JRadioButton r2 = new JRadioButton("No"); 
    group.add(r1); 
    group.add(r2); 
    JLabel lable = new JLabel("Today is sunday?"); 
    panel.add(lable); 
//  panel.add(group);  // How add this? 

    panel.add(r1); 
    panel.add(r2); 

    JButton savebt= new JButton("Save"); 
    JButton cancelbt=new JButton("Cancell"); 
    panel.add(savebt); 
    panel.add(cancelbt); 

    panel.setLayout(new SpringLayout()); 
    SpringUtilities.makeCompactGrid(panel, 1, 3, 50, 100, 25, 50); 
    return panel; 
} 

public static void main(String[] args) { 
    SwingUtilities.invokeLater(new Runnable() { 
     @Override 
     public void run() { 
      new tester(); 
     } 
    }); 
} 
} 

지금이 예외가 발생합니다

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: No such child: 5 

내가 라디오 버튼의 라인의 아래에 내 두 개의 버튼을 표시 할!

답변

3

이 당신의 패널에 세 가지 항목이 있습니다, 그래서 열 수가 3되어야한다 :

SpringUtilities.makeCompactGrid(panel, 1, 3, 50, 100, 25, 50); 

// panel.add (그룹); // 어떻게 추가합니까?

이 것은 필요하지 않습니다. ButtonGroups는 패널에 추가되지 않습니다. 단추 선택 관리 용이며 표시되지 않습니다.

+0

좋은 도움이되었지만 이제는 그 줄 아래에 두 개의 버튼을 추가하여 인접 해 있어야합니다. – Sajad

+0

@ Sajjad- 2 행 3 열 = 6 셀. 당신은 단지 5 개의 구성 요소를 추가하고 있습니다. 그리드에서 빈 셀을 사용할 수 없습니다. 그렇게하면이 예외가 throw됩니다. 마지막 셀에 빈 JLabel을 추가하십시오. – whiskeyspider

+0

좋은 도움, 고마워 ... – Sajad