首页 > 解决方案 > 在 Java Swing 中更改按钮文本时遇到问题

问题描述

我正在尝试测试通过 actionlistener 更改按钮文本的方法。这是我的代码:

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class TCTBack implements ActionListener {

    JFrame frame;
    JPanel panel;
    JLabel label1;
    JButton button1;
    String turn;

    public TCTBack() {

        turn = "-";

        panel = new JPanel();
        panel.setSize(500, 500);

        frame = new JFrame();
        frame.setSize(500,500);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(panel);

        panel.setLayout(null);

        label1 = new JLabel("Interactive Button Test");
        label1.setBounds(10,20,80,25);
        panel.add(label1);

        button1 = new JButton("Button");
        button1.setBounds(10,80,80,25);
        button1.addActionListener(this);
        panel.add(button1);

        frame.setVisible(true);

    }

    @Override
    public void actionPerformed(ActionEvent e) {

        switch (turn) {
            case "-" -> {
                turn = "X";
                button1.setText("X");
            }
            case "x" -> {
                turn = "O";
                button1.setText("O");
            }
            case "O" -> {
                turn = "-";
                button1.setText("-");
            }
        }

    }

    public static void main(String[] args) {

        new TCTBack();

    }

}

它会更改一次按钮的文本,但在我再次单击该按钮后不会更改它。我的目标是能够将按钮的文本从默认值(“-”)更改为 X,然后更改为 O,然后再更改为 -。任何帮助将不胜感激,谢谢。另外,我是提问的新手,所以如果我遗漏任何信息,请告诉我。

标签: javaswing

解决方案


因为您将文本更改为X但您检查它是否等于x

case "X" -> {
    ...
}

推荐阅读