gpt4 book ai didi

java - 禁用 JComboBox 箭头按钮

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:55:56 26 4
gpt4 key购买 nike

我尝试制作一个没有箭头按钮的可编辑 JComboBox。 (它将根据用户在其编辑器中输入的内容显示其下拉列表)

到目前为止,箭头按钮不可见,但仍然可以点击!它仍然在点击时显示列表。

public class MyComboBox<E> extends JComboBox<E> {

public MyComboBox(E[] list) {
super(list);
this.setEditable(true);
setUI(new BasicComboBoxUI() {
@Override
protected JButton createArrowButton() {
return new JButton() {
@Override
public int getWidth() {
return 0;
}
};
}
});
}
}

有没有办法禁用它?

最佳答案

我终于成功了!诀窍是 ComboBox 在更改 UI 后没有相同的组件:

setUI 方法调用之前列出组件时:

class javax.swing.plaf.metal.MetalComboBoxButton

class javax.swing.CellRendererPane

class javax.swing.plaf.metal.MetalComboBoxEditor$1

在调用 setUI 方法之后列出组件时:

class kcomponent.MyComboBox$1$1

class javax.swing.plaf.basic.BasicComboBoxEditor$BorderlessTextField

class javax.swing.CellRendererPane

然后我开始删除这些组件的 MouseListeners,它在第一个组件的第二个 MouseListener 上工作:MyComboBox$1$1。但是光标仍然不同(鼠标指针而不是 Carret 定位器),然后我将其完全删除并且最终效果很好!

这是我修改后的代码:

public class MyComboBox<E> extends JComboBox<E> {

public MyComboBox(E[] list) {
super(list);
this.setEditable(true);
this.setUI(new BasicComboBoxUI() {
@Override
protected JButton createArrowButton() {
return new JButton() {
@Override
public int getWidth() {
return 0;
}
};
}
});
this.remove(this.getComponent(0));
}
}

关于java - 禁用 JComboBox 箭头按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22597108/

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