【发布时间】:2011-11-01 12:17:48
【问题描述】:
我有一个程序可以检测某些机器何时在线,并创建一个带有绿色“在线”图标的按钮来显示这一点。我想添加定期检查这台机器是否仍然在线的功能,如果没有,请将图标更改为我已经定义的“离线”图标。
【问题讨论】:
我有一个程序可以检测某些机器何时在线,并创建一个带有绿色“在线”图标的按钮来显示这一点。我想添加定期检查这台机器是否仍然在线的功能,如果没有,请将图标更改为我已经定义的“离线”图标。
【问题讨论】:
我知道如何设置图标,但我不知道怎么做 一旦按钮已经显示
您可能对Concurency in Swing 有疑问,这意味着所有 Swing 代码都必须在 EDT 上完成
然后你必须将myButton.setIcon(myIcon) 换成invokeLater(),例如
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
myButton.setIcon(myIcon);
}
});
【讨论】:
我有一个程序可以检测某些机器何时在线,并创建一个带有绿色“在线”图标的按钮来显示它。
改用JToggleButton,如图所示here1 & here2。
一旦按钮已经显示,我就想不出办法。
切换状态并触发动作事件doClick() 或setSelected(boolean)。
【讨论】:
您应该可以使用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);
【讨论】:
btn1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/url.png")));
【讨论】:
您可以在按钮上添加一个动作监听器,然后在其调用的函数中更改图标 - 这是一个示例:
public yourDialogSwing() {
Yourbutton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
onButtonPressed();
}
});
}
private void onButtonPressed() {
YourButton.setIcon(YourButton.getPressedIcon());
}
【讨论】: