gpt4 book ai didi

java - 读取并存储 gridLayout 上多个 JButton 的随机值 | Java SWING 查找三元组

转载 作者:行者123 更新时间:2023-12-02 09:37:17 27 4
gpt4 key购买 nike

我正在尝试实现 Finding a triplet作为 SWING GUI 进行练习,其中有一个随机数字网格,用户单击三个数字。如果前两项加起来等于第三项,则会增加正确尝试的计数器。尝试了解如何将每个点击的数字存储在一个对象中,以便我可以检查正确性。

我试图了解应该在 Square 类或 Board 类的何处实现 actionListener,以及如何获取和存储每个单击按钮的值

这就是我获取第一个值的情况,但不知道如何在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();
}
}
}

我想了解如何解决这样的问题的原理。我感觉需要采取一种完全不同的方法。

最佳答案

解决方案不是唯一的,但回复取决于情况。

如果你想用数字给出点击的顺序,我认为使用列表更好。

如果您只想给出总和的结果,最好使用唯一的可验证性。

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

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

}
}
}

关于java - 读取并存储 gridLayout 上多个 JButton 的随机值 | Java SWING 查找三元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57394022/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com