我需要从JLabel开始,例如JLabel,它写着“Old Text”。单击按钮,我想将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");
}
你的代码不起作用的原因是,两个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");
}
}