有没有一种好的(简单的)方法可以使 JCombobox 看起来像 JTextField? 我的意思是不应该有下拉按钮,但是当用户输入内容时它应该显示多个结果。
基本上与 google、youtube、facebook 等的工作方式相同。
最佳答案
JComboBox comboBox = new JComboBox();
comboBox.setUI(new BasicComboBoxUI() {
@Override
protected JButton createArrowButton() {
return new JButton() {
@Override
public int getWidth() {
return 0;
}
};
}
});
让 getWidth() 返回 0 确保:
a) 按钮未显示
b) 没有为它保留空间,让你输入整个字段
我发现我必须通过 SwingUtilities.invokeLater()
调用 .setUI()
,但根据代码的结构,您可能不必这样做.
如果您想要自动完成,请将一些项目添加到组合框中,然后使用 AutoCompleteDecorator.decorate(comboBox)
。 AutoCompleteDecorator
类是 SwingX 的一部分,如前所述。
这可能会使您的盒子在使用另一个 L&F 时看起来很奇怪,因此您必须选择要实例化的 CombiBoxUI,以获得正确的外观。
如果您不希望在组合框中没有任何内容时出现下拉列表,请在 BasicComboBoxUI 中重写此方法:
@Override
public void setPopupVisible(JComboBox c, boolean v) {
// keeps the popup from coming down if there's nothing in the combo box
if (c.getItemCount() > 0) {
super.setPopupVisible(c, v);
}
}
关于java - 如何使 JCombobox 看起来像 JTextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/822432/