Java提供了一种使用button.setEnabled(false);
但是这样做会使整个按钮变灰,从而影响禁用按钮上文本和图像的可见性。
问题:Java中是否有任何可用的方法/方法可以禁用按钮但不会灰显?
当然,我不希望手动调整按钮的ActionListener
来实现这一点。
答案 0 :(得分:2)
公司花费数百万美元来开发用户界面很常见,并且可供所有用户使用。
如果没有可视指示,用户如何知道该按钮被禁用?
我不希望手动调整按钮的ActionListener来实现这一点。
为什么呢?这种方法有什么问题?它比为您的代码可能运行的所有平台创建自定义LAF更好。
无论如何(咆哮完成)你可以使用自定义ButtonModel:
button.setModel( new DefaultButtonModel()
{
@Override
public boolean isArmed()
{
return false;
}
@Override
public boolean isPressed()
{
return false;
}
});
应该适用于所有LAF并且按钮不会被按下(我认为这比仅删除ActionListener更好)。
答案 1 :(得分:0)
这是一些工作,可能不是最好的编码风格或解决方案,但它可能满足您的要求。我假设你有一个图标用于启用按钮,而另一个用于不用的按钮。
基本上,为按钮创建和管理您自己的虚拟“禁用”状态(但不要触及内置的enabled或disabledIcon方法)。
在管理启用/禁用的代码中,当您禁用“虚拟”时,将常规图标(setIcon())设置为禁用的Icon图形,并设置一个布尔值以反映虚拟的“禁用”状态按钮。 当你“启用”时,使用setIcon()返回默认的Icon,并设置布尔值以反映“enabled”。
然后,当单击该按钮时,在ActionListener中,您可以检查布尔值,如果布尔表示虚拟状态为“已禁用”,则不执行任何操作。