gpt4 book ai didi

java - 使多个 JTextFields 改变颜色 Java

转载 作者:行者123 更新时间:2023-11-29 05:16:31 25 4
gpt4 key购买 nike

我试图通过使用数组使 JTextField 随机化为黄色。我只设法使 1 个文本字段变为黄色,然后在每次单击 1 秒后变为白色。我想要做的是,当您按下按钮时,第一个随机文本字段变为黄色然后变为白色。当您第二次按下第一个随机文本字段时,秒数将变为黄色,然后变为白色,依此类推。该数组的工作方式如您所见,我正在打印它,当您按下按钮时,它会按顺序打印所有随机数字。

问题是 JTextField 无法处理 int,而且它显然必须是“Final”,因此很难进行乘法运算 JTextField 的黄色。我将我的阵列粘贴给您,以便您可以更好地理解我正在尝试做的事情。有谁知道解决方案?

//我的数组

JTextField[] boxes = new JTextField[9]; //Array for the textfields
int[] clicked = new int[100];
int clickAmount = 0;

//在启动时,它用文本字段填充框数组:

 boxes[0] = textfield1;
boxes[1] = textfield2;
boxes[2] = textfield3;
boxes[3] = textfield4;
boxes[4] = textfield5;
boxes[5] = textfield6;
boxes[6] = textfield7;
boxes[7] = textfield8;
boxes[8] = textfield9;


public void timePaus (final JTextField textfield) {

new Timer(1000, new ActionListener() {
public void actionPerformed (ActionEvent e) {
textfield.setBackground(Color.white);
// stop the timer
((Timer) e.getSource()).stop();
}

}).start();

}


private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { //Button

int randomint = this.randomBox(); //Finds a number between 0-8
final JTextField ThatTextfield = boxes[randomint]; //Puts a textfield into an array
clicked[clickAmount] = randomint+1; //adds textfield number into an array
clickAmount++;

ThatTextfield.setBackground(Color.yellow); //make choosen textfield yellow


for (int i = 0; i < clickAmount; i++)
{
timePaus(ThatTextfield); //make choosen textfield white after 1 sec
System.out.println(clicked[i]);
}
}

最佳答案

注意事项:

  • 将您的 JTextFields 放在 ArrayList<JTextField> 中,但为了避免不必要的重复,在 for 循环中创建它们。
  • 当您想随机化 ArrayList 时,调用 Collections.shuffle(myTextFieldList)在您的 JTextFields 列表上。
  • 给你的类(class)一个 int maxIndex 字段。
  • 在您的 Swing 计时器中,遍历现在随机化的 JTextFields 列表,显示每一个直到 maxIndex 持有的值,并且不超过列表的大小。
  • 增加计时器中的 maxIndex。
  • 或者,您可以再创建两个 ArrayList<JTextField> , 一个是洗牌收集的文本字段。然后从您按钮的监听器中的此列表中删除第 0 个 JTextField,并将其放入另一个 ArrayList,然后在您的 Timer 中循环访问第 2 个 ArrayList 的 JTextfield。

关于java - 使多个 JTextFields 改变颜色 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26344428/

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