【问题标题】:trying to change the button name on click尝试在单击时更改按钮名称
【发布时间】:2018-05-16 13:13:11
【问题描述】:

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

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

@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;
    }
}

【问题讨论】:

  • 此文本是否显示给用户?如果是,请不要使用setName,而是使用setText()
  • 你怎么知道它不会改变?在setName() 之后,您没有打印getName()。换句话说,你看到的并不总是对象的状态(尽管使用了错误的方法)
  • @BasilBattikhi 成功了!谢谢

标签: java swing


【解决方案1】:

关于this answer

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多