基本上,我所拥有的是2个阵列。一个JButton
长26个数组,一个String
个数组,每个字母都有一个字母,还有一个for循环,用于为字母表中的每个字母创建一个按钮,并将其插入{{1数组:
JButton
我想要做的是为所有按钮创建一个事件。每当按下一个按钮时,它所匹配的任何字母都将被设置为JButton[] buttons = new JButton[26];
String letters[]{"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
for(int i = 0; i < buttons.length; i++){
buttons[i] = new JButton(letters[i]);
panel.add(buttons[i]);
}
被称为猜测的值。
到目前为止,我知道我需要做这样的事情:
String
我的问题在于我写x的地方。我不知道该放什么。我需要这个才能适用于阵列中的所有26个按钮......
对不起,如果这看起来很明显/简单。我显然是java的新手,我只是不明白x.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
//Insert what I want to happen
}
});
的工作方式以及如何做到这一点。
答案 0 :(得分:2)
定义一个ActionListener,如下所示。
ActionListener aListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent event){
//find the actioncommand and do what is required.
}
};
将此ActionListener与每个按钮相关联。
for(int i = 0; i < buttons.length; i++){
buttons[i] = new JButton(letters[i]);
buttons[i].setActionCommand(letters[i]);
buttons[i].addActionListener(aListener);
panel.add(buttons[i]);
}
答案 1 :(得分:1)
只需测试actionCommand,它是一个String值并将其与字母进行比较,然后执行某些操作。
x.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
if (e.getActionCommand().equals("A")
// do something
else if (e.getActionCommand().equals("B")
// do soemthing
...
...
}
});
我喜欢在这种情况下使用开关。
public void actionPerformed(ActionEvent e){
String letter = e.getActionCommand();
switch(letter) {
case "A" : do something; break;
case "B" : do something; break;
case "C" : do something; break;
...
...
}
}