gpt4 book ai didi

java - 如果已启用,则隐藏 JComboBox 的按钮

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:24:34 25 4
gpt4 key购买 nike

我想扩展 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;
}
}
}

EDIT 2 :我最终无法做我想做的事,就好像我切换到 Nimbus PLAF 一样,即使我隐藏了绘制背景的按钮,所以只有箭头被隐藏了,一切else 还在。

我将不得不使用 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 行为 - 因此可能会使用户感到困惑

关于java - 如果已启用,则隐藏 JComboBox 的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7751388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com