在 gridLayout | 上读取和存储多个 JButton 的随机值Java SWING 寻找三胞胎
Reading and storing the random values of multiple JButtons on a gridLayout | Java SWING Finding a triplet
我正在尝试将 Finding a triplet 练习实现为 SWING GUI,其中有一个随机数网格,用户单击三个数字。如果前两个加起来等于第三个,它会增加正确尝试的计数器。试图了解如何将每个点击的数字存储在一个对象中,以便检查正确性。
我想知道我应该在哪里实现 actionListener,在 Square class 或 Board class,以及如何获取和存储每个点击按钮的值
就获取第一个值而言,这是我所了解的,但不知道如何在 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();
}
}
}
我想了解这样一个问题的处理原理。我觉得需要采取一种完全不同的方法。
解决方案不是唯一的,而是取决于解决方案。
如果你想用数字栏给出点击的顺序,我认为使用列表更好。
如果你只想给出总和的结果,最好使用 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);
}
}
}
我正在尝试将 Finding a triplet 练习实现为 SWING GUI,其中有一个随机数网格,用户单击三个数字。如果前两个加起来等于第三个,它会增加正确尝试的计数器。试图了解如何将每个点击的数字存储在一个对象中,以便检查正确性。
我想知道我应该在哪里实现 actionListener,在 Square class 或 Board class,以及如何获取和存储每个点击按钮的值
就获取第一个值而言,这是我所了解的,但不知道如何在 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();
}
}
}
我想了解这样一个问题的处理原理。我觉得需要采取一种完全不同的方法。
解决方案不是唯一的,而是取决于解决方案。
如果你想用数字栏给出点击的顺序,我认为使用列表更好。
如果你只想给出总和的结果,最好使用 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);
}
}
}