java-如果启用了JComboBox的按钮,则隐藏它
作者:互联网
我想扩展JComboBox类,不做任何更改,我希望新组件在禁用组合框时隐藏选择按钮.
我找不到此按钮的创建位置
编辑:到目前为止,我正在使用此代码:
@Override
public void setEnabled(boolean b)
{
super.setEnabled(b);
Component[] comps = getComponents();
for(Component comp : comps)
{
if(comp instanceof MetalComboBoxButton)
{
final MetalComboBoxButton dropDownButton = (MetalComboBoxButton) comp;
dropDownButton.setVisible(b);
break;
}
}
}
编辑2:我无法做我最后想要做的事情,就好像我切换到Nimbus PLAF一样,即使我隐藏了绘制背景的按钮,因此也只有箭头被遮盖了,其他所有内容仍然存在.
我将与JPanel有关.
解决方法:
从技术上讲,您可以继承JComboBox并删除/添加按钮(如@flash所示)或切换其可见性
final JComboBox box = new JComboBox(new Object[] {1, 2, 3}) {
/**
* @inherited <p>
*/
@Override
public void setEnabled(boolean b) {
if (b == isEnabled()) return;
for (Component child : getComponents()) {
if (child instanceof JButton) {
child.setVisible(b);
break;
}
}
super.setEnabled(b);
}
};
但是,您可能需要重新考虑该要求,因为它是非标准的ui行为-这样可能会使用户感到困惑
标签:jcombobox,swing,java 来源: https://codeday.me/bug/20191102/1988943.html