【问题标题】:Is it possible to make JToggle text depend on its state?是否可以使 JToggle 文本取决于其状态?
【发布时间】:2013-05-03 12:36:05
【问题描述】:

如果选择了 JToggle 按钮,我是否可以将文本设置为“ON”,如果没有,则设置为“OFF”? 我正在尝试使用此代码:

    if(togbut.isSelected()){
        togbut.setText("ON");
    }
     else if(!togbut.isSelected()){
           togbut.setText("OFF");
    }

但它不起作用。 我使用的是 NetBeans 7.3。

【问题讨论】:

  • 你把这段代码放在哪里了?在您已注册该切换按钮的更改事件的侦听器中?

标签: java swing jtogglebutton itemlistener changelistener


【解决方案1】:

您的代码几乎是正确的。

它必须放在切换按钮的更改监听器中。

    toggleButton.addChangeListener(new ChangeListener() {
        @Override
        public void stateChanged(ChangeEvent event) {
            if (toggleButton.isSelected()){
                toggleButton.setText("ON");
            } else {
                toggleButton.setText("OFF");
            }
        }
    });

【讨论】:

  • 或ItemListener、ActionListner
【解决方案2】:

您必须将ItemListener 附加到该切换按钮:

final JToggleButton togbut = new JToggleButton();
togbut.addItemListener(new ItemListener() {

    @Override
    public void itemStateChanged(ItemEvent e) {
        if (e.getStateChange() == ItemEvent.SELECTED) {
            togbut.setText("ON");
        } else {
            togbut.setText("OFF");
        }
    }
});

【讨论】:

    【解决方案3】:

    嗯,试试这个:

    JToggleButton togbut = new JToggleButton("Click");
    togbut.addItemListener(new ItemListener() {
       public void itemStateChanged(ItemEvent ev) {
          if(ev.getStateChange()==ItemEvent.SELECTED){
            togbut.setText("ON");
          } else if(ev.getStateChange()==ItemEvent.DESELECTED){
            togbut.setText("OFF");
          }
       }
    });
    

    【讨论】:

      【解决方案4】:

      只需向你的 togbut 添加一个动作监听器:

      togbut.AddActionListener(this);
      

      并在 ActionPerformed() 方法中添加您的代码。
      此外,我认为 JToggleButton 不能有除 Selected!Selected 之外的其他状态 因此,您可以将 if 结构更改为:

      if(togbut.isSelected()){
          togbut.setText("ON");
      } else {
          togbut.setText("OFF");
      }
      

      【讨论】:

        【解决方案5】:

        您需要将ItemListener 接口添加到您使用JToggleButton 的类中。实现应该是这样的:

        public class MyClassThatUsesToggleButton implements  ItemListener{
        
            //
            // some code
            //
            JToggleButton toggleButton;
        
            public void itemStateChanged(ItemEvent e) {
                if(e.getStateChange() == ItemEvent.SELECTED)
                {
                    toggleButton.setText("On!");
                    totalGUI.setBackground(Color.green);
                }
                else
                {
                    toggleButton.setText("Off");
                    totalGUI.setBackground(Color.red);
                } 
            //
            // some more code
            //
            }
        

        【讨论】:

        • 或者你可以使用@Gilbert Le Blanc 推荐你的方法......如果我的更好或者他取决于你想要捕捉多少动作..
        猜你喜欢
        • 1970-01-01
        • 2021-01-21
        • 1970-01-01
        • 1970-01-01
        • 2020-02-05
        • 1970-01-01
        • 1970-01-01
        • 2017-03-31
        • 2018-03-09
        相关资源
        最近更新 更多