2017-03-21 1 views
0

1부터 5까지의 값을 갖는 5 개의 RadionButton이 있습니다. 내 선택에 따라 값을 인쇄하고 싶습니다.그룹에서 JRadionButton을 선택하고 int 값을 출력하십시오.

JRadioButton rOneStar = new JRadioButton(); 
    rOneStar.setActionCommand(Integer.toString(1)); 
    JRadioButton rTwoStars = new JRadioButton(); 
    rTwoStars.setActionCommand(Integer.toString(2)); 
    JRadioButton rThreeStar s= new JRadioButton(); 
    rThreeStars.setActionCommand(Integer.toString(3)); 
    JRadioButton rFourStars = new JRadioButton(); 
    rFourStars.setActionCommand(Integer.toString(4)); 
    JRadioButton rFiveStars = new JRadioButton(); 
    rFiveStars.setActionCommand(Integer.toString(5)); 


    // group stars 
    ButtonGroup starGroup = new ButtonGroup(); 
    starGroup.add(rOneStar); 
    starGroup.add(rTwoStars); 
    starGroup.add(rThreeStars); 
    starGroup.add(rFourStars); 
    starGroup.add(rFiveStars); 

이제 값을 출력하는 ActionListeners가 여러 개 있습니다. 그러나 제 의견으로는 너무 많은 코드입니다.

 rOneStar.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       e.getActionCommand(); 
       System.out.println(starGroup.getSelection().getActionCommand()); 
      } 
     }); 
     rTwoStars.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       e.getActionCommand(); 
       System.out.println(starGroup.getSelection().getActionCommand()); 
      } 
     }); 
     ... and so on 

아무에게도 내 코드를 단축 할 수있는 방법을 알려주세요.

답변

0

는 더 수행 할 작업을 따라 달라집니다하지만 당신에 의해 주어진 코드와 함께, 당신은 두 가지 방법으로 추출하여 비트를 리팩토링 수 :이 같은 코드를 절감하고 조금 더 좋은 만들 것

private JRadioButton createJRadioButton(int x){ 
    final JRadioButton rXStar = new JRadioButton(); 
    rXStar.setActionCommand(Integer.toString(x)); 
    return rXStar; 
} 

private ActionListener createActionListener(){ 
return new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       e.getActionCommand(); 
       System.out.println(starGroup.getSelection().getActionCommand()); 
      } 
     }; 
} 

을 그래서 :

JRadioButton rOneStar = createJRadioButton(1); 
JRadioButton rTwoStars = createJRadioButton(2); 
JRadioButton rThreeStar = createJRadioButton(3); 
JRadioButton rFourStars = createJRadioButton(4); 
JRadioButton rFiveStars = createJRadioButton(5); 

// group stars 
ButtonGroup starGroup = new ButtonGroup(); 
starGroup.add(rOneStar); 
starGroup.add(rTwoStars); 
starGroup.add(rThreeStars); 
starGroup.add(rFourStars); 
starGroup.add(rFiveStars); 

rOneStar.addActionListener(createActionListener()); 
rTwoStars.addActionListener(createActionListener()); 
rThreeStars.addActionListener(createActionListener()); 
rFourStars.addActionListener(createActionListener()); 
rFiveStars.addActionListener(createActionListener()); 
+0

당신의 도움에 감사드립니다! :) – cosmohorst

관련 문제