当前位置:  开发笔记 > 编程语言 > 正文

如何使JCombobox看起来像JTextField

如何解决《如何使JCombobox看起来像JTextField》经验,为你挑选了1个好方法。

是否有一种好的(简单的)方法可以使JCombobox看起来像JTextField?我的意思是不应该有一个下拉按钮,但是当用户输入内容时它应该显示多个结果.

谷歌,YouTube,Facebook等基本相同的方式工作.



1> Markus Jevri..:
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);
    }
}

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有