我试图通过使用数组使随机JTextField
的黄色。我只设法将1个文本字段设为黄色,然后在每次点击1秒后再设置为白色。我想要做的是当您按下按钮时,第一个随机化的Textfield变为黄色然后变为白色。当你第二次按下第一个随机文本字段时,秒数将变为黄色,然后是白色,依此类推。数组工作正如你所见,我打印它,当你按下按钮时,按顺序打印所有随机数字。
问题是JTextField
无法处理int
,而且显然必须是“最终”,因此很难使JTextField
的黄色成倍增加。我将我的数组粘贴到您身上,以便您可以更好地了解我正在尝试做的事情。有谁知道解决方案?
//我的阵列
JTextField[] boxes = new JTextField[9]; //Array for the textfields
int[] clicked = new int[100];
int clickAmount = 0;
//在启动时,它使用textfield填充box数组:
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]);
}
}
答案 0 :(得分:3)
考虑:
ArrayList<JTextField>
中,但是为了避免不必要的重复而在for循环中创建它们。Collections.shuffle(myTextFieldList)
。ArrayList<JTextField>
,一个用于随机播放收集的文本字段。然后从按钮的侦听器中的此列表中删除第0个JTextField,并将其放入另一个ArrayList中,然后遍历Timer中的第二个ArrayList的JTextfield。