我需要从一个JLabel开始,例如一个读为“ Old Text”的JLabel。单击按钮,我想将该JLabel更新为“更新的文本”。我可以使用下面发布的代码来执行此操作,但是我的问题是我希望能够再次单击该按钮以返回到“旧文本”,依此类推。基本上,我需要一个按钮来允许我在这两个文本之间切换,但是我无法使用它。
// this doesn't switch back to "Old Code"
public void actionPerformed(ActionEvent event) {
if(event.getSource() == jbutton)
jlabel.setText("Updated Text");
if(event.getSource() == jbutton)
jlabel.setText("Old Text");
}
这可行,但不是我完全需要的,因为它只更改JLabel一次。
public void actionPerformed(ActionEvent event) {
if(event.getSource() == jbutton)
jlabel.setText("Updated Text");
}
答案 0 :(得分:2)
您的代码无法正常工作的原因是,两个if
语句均评估为true
,因此都可以执行
您可以通过多种方式执行此操作,可能最简单的方法就是检查标签文本的状态,然后对要执行的操作做出决定,例如...
public void actionPerformed(ActionEvent event) { if(event.getSource() == jbutton) jlabel.setText("Updated Text");
if(event.getSource() == jbutton) {
if (!jlabel.getText().equals("Old Text")) {
jlabel.setText("Old Text");
} else {
jlabel.setText("Updated text");
}
}
}
现在,如果您想“真正”喜欢,可以使用一些模块化数学...
private int trigger = 0;
@Override
public void actionPerformed(ActionEvent e) {
trigger++;
if ((trigger % 2) == 0) {
label.setText("Old text");
} else {
label.setText("Updated text");
}
}