首页 > 解决方案 > 尝试在单击时更改按钮名称

问题描述

我有一个按钮,我想在第二次单击它时做一些不同的事情。为此,我让单击的按钮处理程序检查按钮的名称,并在第一次按下它时更改此名称。

按钮名称没有改变,我是否需要重新打包或更新它所属的按钮面板?

@Override
    public void actionPerformed(ActionEvent e) {
        switch(((JButton) e.getSource()).getName()) {
        case "TR":
                ((JButton) e.getSource()).setName("Done TR");
                awaitPoints("TR");
                break;
        case "Done TR":
                CP.ComputeTransfo();
                ((JButton) e.getSource()).setName("TR Complete");
                ((JButton) e.getSource()).setEnabled(false);
                break;
        default:
                System.out.println("ERROR:TFM01");
                System.exit(0);
                break;
    }
}

标签: javaswing

解决方案


关于这个答案

Component.setName(..) 在 JDK 中主要由外观实现类使用来为每个组件设置类似 ID 的字符串,例如 BasicOptionPaneUI 可能会在按钮组件上调用它以将其名称设置为“OptionPane.button”。

所以如果你想改变你需要使用的标签的文本setText()不是setName()

JButton btn=new JButton("Text Before the change");
btn.setText("This text got changed!")

推荐阅读