我使用JButton
创建了棋盘,而我使用了ASCII值。
我在所有按钮中添加了ActionListener
。当我点击源(第一个)按钮actionPerformed
事件被调用时,我将按钮的值存储在变量中。
但问题是当我点击目标按钮actionPerformed
事件被调用并且值被源按钮值替换时。
我想要不同变量中的源按钮值和目标按钮值。怎么可能?
public void actionPerformed(ActionEvent ae)
{
JButton o = (JButton) ae.getSource();
value = o.getText();
}
答案 0 :(得分:2)
然后你需要2个变量来存储这两个值,第三个变量来告诉你发生了哪个点击。
if(isSource){
source = o.getText();
isSource = false;
}else{
destination = o.getText();
isSource = true;
}
这样,在第一次单击时,您就知道了源的值,在第二次单击时,您知道目标的值。然后在下一次点击它再次是一个来源等。
答案 1 :(得分:1)
您必须以某种方式管理应用程序的状态。在第一次单击时,应用程序的状态是它等待移动源的信息。然后它等待移动目的地的信息。
你可以在你的班级中创建一个枚举:
enum ActionState {
SOURCE,
DESTINATION
}
并将动作状态和按钮变量存储为类的成员:
ActionState state = SOURCE;
String source;
String destination;
然后actionPerformed将是这样的:
public void actionPerformed(ActionEvent ae)
{
JButton o = (JButton) ae.getSource();
String value = o.getText();
if (state == SOURCE){
source = value;
state = DESTINATION;
}
else if (state == DESTINATION){
destination = value;
state = SOURCE;
// you probably want to call something here to perform the move itself.
}
}
您可以使用布尔值来表示您的状态,而不是枚举。但是如果将来需要其他状态,使用枚举可以实现更大的可扩展性。