Скрыть JComBox Box Arrow - PullRequest
       0

Скрыть JComBox Box Arrow

7 голосов
/ 20 сентября 2011

Можно ли скрыть стрелку, отображаемую в JComboBox

Я попытался установить:

combo.getComponent(0).setSize(new Dimension(1,1));

Но, похоже, не работает

Ответы [ 2 ]

8 голосов
/ 20 сентября 2011

Для этого необходимо создать новый пользовательский интерфейс со списком:

combo.setUI(new BasicComboBoxUI() {
    protected JButton createArrowButton() {
        return new JButton() {
            public int getWidth() {
                return 0;
            }
        };
    }
});

Но будьте осторожны, чтобы унаследовать от базового интерфейса, который соответствует вашему текущему внешнему виду.

Например, если вы используете Вещество, вы должны получить новый пользовательский интерфейс из SubstanceComboBoxUI вместо BasicComboBoxUI. В противном случае вы можете потерять функции, предоставляемые вашим текущим L & F.

РЕДАКТИРОВАТЬ: Если вы хотите, чтобы это получило какую-то функцию автозаполнения, лучше придерживаться обычного JTextField и использовать AutoCompleteDecorator из SwingX .

3 голосов
/ 02 июля 2015

Я некоторое время искал решение этой проблемы, и оказалось, что все, что нужно, - это помнить, что JComboBox является составным компонентом.

for (Component component : TheComboBox.getComponents())
{
    if (component instanceof JButton) {
        TheComboBox.remove(component);
    }
}

Спасибо за mKorbel за напоминание .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...