是否有一种好的(简单的)方法可以使JCombobox看起来像JTextField?我的意思是不应该有一个下拉按钮,但是当用户输入内容时它应该显示多个结果.
谷歌,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)没有为它保留空间,让你输入整个字段
我发现我必须调用.setUI()
via SwingUtilities.invokeLater()
,但根据代码的结构,你可能不必这样做.
如果要自动完成,请将一些项添加到组合框中,然后使用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); } }