我尝试仅在 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");
}
}
}
最佳答案
这段代码有两个问题。
- 父类的方法未被覆盖。
MouseClicked
应该是mouseClicked
(小写的第一个字母),就像在父( super )类中一样,以便它被覆盖并捕获鼠标事件。 - 使用嵌套的
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
}
}
关于单击两个 jbutton 后的 java swing Action 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30439372/