gpt4 book ai didi

java - 在 Java Swing 中等待多个按钮输入

转载 作者:行者123 更新时间:2023-11-30 04:23:44 25 4
gpt4 key购买 nike

抱歉,我的英语不好,不是母语人士。我正在 GUI 中的 Java 上开发 SimonSays 游戏。我是编码新手。我设法使应用程序在控制台上运行,但是使其以图形方式运行却很困惑。该程序将生成的序列 (secuenciaSimon) 中的 LinkedList 与用户通过按钮 (secuenciaUsuarioGUI) 输入的 LinkedList 进行比较,但是,问题是通过单击任何按钮来调用比较方法,因此 simon 生成的序列中的 LinkedList比用户输入的要大。

黄色按钮代码

private void bAmarilloMousePressed(java.awt.event.MouseEvent evt) {
secuenciaUsuarioGUI.add(3); //Adds the selection to the LinkedList yellow=3
System.out.println("Secuencua Usuario GUI:" + secuenciaUsuarioGUI.toString());
comparaSecuencia();
generaSecuencia(); //Adds another value to the LinkedList
}

比较代码

public boolean comparaSecuencia(){
for (int i = 0; i < secuenciaSimon.size(); i++) {

//Here the pause should be

if(secuenciaSimon.get(i) != secuenciaUsuarioGUI.get(i)){

System.out.println("Not equal");
return false;
}

}
System.out.println("Equal");
puntuacion += 100; //Score
secuenciaUsuarioGUI.clear(); //Clears the LinkedList From the user
return true;


}

TL;博士在运行更多代码而不卡住程序之前,需要等待 GUI 上按钮的“n”次输入。

谢谢

最佳答案

使用 int count 变量,将其设置为 0,并在每次按下按钮时递增它。仅当计数足够时(即 == 3 时)才执行操作。

例如

// this is a class field
private int count = 0;

// in the code where you create your GUI
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
count++; // increment count
// do something with the button pressed, add information to a list
secuenciaUsuarioGUI.add(/* ?? something ?? */);
if (count == 3) {
// check the sequence
comparaSecuencia(); // ?? maybe this
count = 0; // reset
}
}
});

一个关键概念是您必须使代码事件驱动。您不是在创建线性控制台程序,并且以前在 for 循环中的大量代码不再在 for 循环中,而是在事件发生时增加计数器或更改对象的状态,然后对状态的更改使用react.

注意:如果您正在监听用户按下 JButton,请不要使用 MouseListener,而应使用 ActionListener。

关于java - 在 Java Swing 中等待多个按钮输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16388632/

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