为了账号安全,请及时绑定邮箱和手机立即绑定

在 gridLayout | 上读取和存储多个 JButton 的随机值 Java SWING

在 gridLayout | 上读取和存储多个 JButton 的随机值 Java SWING

慕运维8079593 2023-05-17 17:43:05
我正在尝试将查找三元组练习实现为 SWING GUI,其中有一个随机数网格,用户单击三个数字。如果前两个加起来等于第三个,它会增加正确尝试的计数器。试图了解如何将每个单击的数字存储在一个对象中,以便检查正确性。我试图了解我应该在哪里实现 actionListener,在 Square 类或 Board 类,以及如何获取和存储每个单击按钮的值这是我在获取第一个值的过程中得到的,但不知道如何在 actionListener 之外读取它,或者如何获取其他值。private class ButtonListener implements ActionListener {        @Override        public void actionPerformed(ActionEvent e) {            if(e.getSource()==finish)                JOptionPane.showMessageDialog(null, "You made " + wrongs + "correct tries.");            else{                Square sqr = (Square) e.getSource();                int num = sqr.getNum();            }        }    }我想了解如何解决此类问题的原理。我觉得需要采取一种完全不同的方法。
查看完整描述

1 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

解决方案不是唯一的,但resposte是取决于。

如果你想用 numbar 给出点击的顺序,我认为使用 List 会更好。

如果你只想给出总和的结果,最好使用 unique veriable。

一个示例解决方案,假设我们使用具有全局可见性的组件(虽然面向对象编程不推荐这些具有全局可见性的组件)

public class SingletonGame{


    private static final SingletonGame SINGLETON = new SingletonGame();


    public static SingletonGame getInstance(){

        return SINGLETON;

    }


    private int sum;

    //or

    private List<Integer> operations = new ArrayList<>();


    private SingletonGame(){}


    public int getSum(){

        return sum;

    }


    //or

    public List<Integer> getOperations(){

        return operations;

    }


    public void addSum(int num){

        this.sum += num;

    }


    //or

    public void addOp(int num){

        this.operations.add(num);

    }


    publi void getResult(){

        //inside this method you have your logic

        //for calculate result

    }


}


//Inside your action


private class ButtonListener implements ActionListener {

        @Override

        public void actionPerformed(ActionEvent e) {

            if(e.getSource()==finish)

                JOptionPane.showMessageDialog(null, "You made " + wrongs + "correct tries.");

            else{

                Square sqr = (Square) e.getSource();

                int num = sqr.getNum();

                // you must do control when is case for call SingletonGame.getInstance().getResult();

                SingletonGame.getInstance().sum(num);


            }

        }

    }


查看完整回答
反对 回复 2023-05-17
  • 1 回答
  • 0 关注
  • 91 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信