【问题标题】:Select a JRadionButton from group and print out an int value从组中选择一个 JRadionButton 并打印出一个 int 值
【发布时间】:2017-03-21 10:07:31
【问题描述】:

我有五个 RadionButtons,值从 1 到 5。根据我的选择,我想打印出值。

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

现在我有多个打印出值的 ActionListener。但在我看来,代码太多了。

        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

谁能给我一个提示,请我如何缩短我的代码?

【问题讨论】:

    标签: java actionlistener radio-group


    【解决方案1】:

    取决于您想进一步做什么,但使用您提供的代码 sn-p,您可以通过提取两种方法进行一些重构:

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

    【讨论】:

    • 感谢您的帮助! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多