【问题标题】:Dynamically change jButton icon动态改变 jButton 图标
【发布时间】:2011-11-01 12:17:48
【问题描述】:

我有一个程序可以检测某些机器何时在线,并创建一个带有绿色“在线”图标的按钮来显示这一点。我想添加定期检查这台机器是否仍然在线的功能,如果没有,请将图标更改为我已经定义的“离线”图标。

【问题讨论】:

    标签: java swing jbutton


    【解决方案1】:

    我知道如何设置图标,但我不知道怎么做 一旦按钮已经显示

    您可能对Concurency in Swing 有疑问,这意味着所有 Swing 代码都必须在 EDT 上完成

    然后你必须将myButton.setIcon(myIcon) 换成invokeLater(),例如

    SwingUtilities.invokeLater(new Runnable() {
    
        @Override
        public void run() {
            myButton.setIcon(myIcon);
        }
    });
    

    【讨论】:

      【解决方案2】:

      我有一个程序可以检测某些机器何时在线,并创建一个带有绿色“在线”图标的按钮来显示它。

      改用JToggleButton,如图所示here1 & here2

      一旦按钮已经显示,我就想不出办法。

      切换状态并触发动作事件doClick()setSelected(boolean)

      截图

      【讨论】:

        【解决方案3】:

        您应该可以使用AbstractButton.setIcon() 来执行此操作。 可能需要您在按钮上调用invalidate() 才能显示更改。

        changeButton = new JButton(icon1);
        changeButton.addActionListener(
            new ActionListener( )
            {
                private boolean flag = true;
        
                @Override
                public void actionPerformed( ActionEvent arg0 )
                {
                    changeButton.setIcon( flag ? icon2 : icon1 );
                    flag = !flag;
                }
            }
        );
        add(changeButton);
        

        【讨论】:

        • 我知道如何设置图标,但是一旦按钮已经显示,我就想不出办法。
        • 你可以在 JButton 已经绘制好的时候使用它。我添加了一个代码 sn-p 来演示这一点:一个 JButton,当它被点击时会改变它的图标。
        【解决方案4】:
        btn1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/url.png")));
        

        【讨论】:

          【解决方案5】:

          您可以在按钮上添加一个动作监听器,然后在其调用的函数中更改图标 - 这是一个示例:

          public yourDialogSwing() {
          
                  Yourbutton.addActionListener(new ActionListener() {
                      public void actionPerformed(ActionEvent e) {
                          onButtonPressed();
                      }
                  });
          }
          
          private void onButtonPressed() {
                 YourButton.setIcon(YourButton.getPressedIcon());
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-08-23
            • 2020-09-11
            • 2023-03-12
            • 2014-02-14
            • 1970-01-01
            相关资源
            最近更新 更多