如何在每次单击按钮时使用JButton更改JLabel?

时间:2019-04-20 23:21:01

标签: java swing jbutton actionlistener jlabel

我需要从一个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");
}

1 个答案:

答案 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");
    }
}