java 点击两个jbutton后的摆动动作事件
java swing action event after two jbuttons are clicked
我试图仅当在 jButton1 之后单击 jButton2 时才打印 "Hello",并且仅当在 jButton1 之后单击任何其他 jButton 时才打印 "Bye"。目前,以下代码不打印任何内容。
public void MouseClicked(java.awt.event.MouseEvent e){
if (e.getSource() == jButton1) {
if (e.getSource() == jButton2) {
System.out.println ("Hello");
} else {
System.out.println ("Bye");
}
}
}
一个事件一次只能来自一个按钮。因此,在第一个按钮的 eventListener 中,添加将事件记录在布尔变量中的代码,然后检查第二个按钮的 eventListener 中的该变量,以确保两个按钮都已被单击。
这段代码有两个问题。
- 来自父 class 的方法未被覆盖。
MouseClicked
应该是 mouseClicked
(小写的第一个字母),就像在父级(超级)class 中一样,以便它被覆盖并捕获鼠标事件。
- 没有必要使用嵌套的
if-else
语句,因为每次点击都会调用此方法,并且不会保存之前点击其他按钮的状态。
此代码适合您。
boolean button1ClickedLast = false;
public void mouseClicked(java.awt.event.MouseEvent e){
if (e.getSource() == jButton1) {
button1ClickedLast = true;
System.out.println ("Bye");
}
else if (e.getSource() == jButton2) {
if(button1ClickedLast) {
System.out.println ("Hello");
}
else{
// do nothing or something if you want
}
}
else {
button1ClickedLast = false; // to change status to false in case any other button is clicked last
}
}
我试图仅当在 jButton1 之后单击 jButton2 时才打印 "Hello",并且仅当在 jButton1 之后单击任何其他 jButton 时才打印 "Bye"。目前,以下代码不打印任何内容。
public void MouseClicked(java.awt.event.MouseEvent e){
if (e.getSource() == jButton1) {
if (e.getSource() == jButton2) {
System.out.println ("Hello");
} else {
System.out.println ("Bye");
}
}
}
一个事件一次只能来自一个按钮。因此,在第一个按钮的 eventListener 中,添加将事件记录在布尔变量中的代码,然后检查第二个按钮的 eventListener 中的该变量,以确保两个按钮都已被单击。
这段代码有两个问题。
- 来自父 class 的方法未被覆盖。
MouseClicked
应该是mouseClicked
(小写的第一个字母),就像在父级(超级)class 中一样,以便它被覆盖并捕获鼠标事件。 - 没有必要使用嵌套的
if-else
语句,因为每次点击都会调用此方法,并且不会保存之前点击其他按钮的状态。
此代码适合您。
boolean button1ClickedLast = false;
public void mouseClicked(java.awt.event.MouseEvent e){
if (e.getSource() == jButton1) {
button1ClickedLast = true;
System.out.println ("Bye");
}
else if (e.getSource() == jButton2) {
if(button1ClickedLast) {
System.out.println ("Hello");
}
else{
// do nothing or something if you want
}
}
else {
button1ClickedLast = false; // to change status to false in case any other button is clicked last
}
}