每按一次按钮,我如何使用JButton更改JLabel?

问题描述 投票:-1回答:1

我需要从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");
}
java swing jbutton actionlistener jlabel
1个回答
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");
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.