2017-03-21 8 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

は、あなたが、さらに何をしたいかによって異なりますが、あなたによって与えられたコードスニペットでは、次の2つの方法で抽出してビットをリファクタリングできます。これは以下のように、あなたのコードを削減し、それは少し立派になるだろう

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()); 
      } 
     }; 
} 

をso:

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

関連する問題