JComboBox теряет события клавиатуры после установки пользовательского интерфейса - PullRequest
1 голос
/ 19 октября 2011

У меня следующая проблема:

Мне нужно установить пользовательский интерфейс для JComboBoxComponent (для изменения цвета, кнопки со стрелкой и т. Д.) В настоящее время я делаю это в конструкторе, например:

public MyComboBox() {
   setUI(new MyComboBoxUI);
}

Проблема в том, что после настройки пользовательского интерфейса я каким-то образом теряю все содержимое InputMap и ActionMap для списка во всплывающем окне со списком, то есть он не прокручивает список вверх или вниз с помощью клавиш со стрелками.

Что я здесь не так делаю?

Вот код:

public class CurrencyPairComboBox extends JComboBox { 

    public CurrencyPairComboBox() {
        setUI(new CurrencyPairComboBoxUI());
    }
}

class CurrencyPairComboBoxUI extends BasicComboBoxUI {

    @Override
    public void installUI(JComponent c) {
       super.installUI(c);

       listBox.setSelectionBackground(Color.BLACK);
       listBox.setSelectionForeground(Color.WHITE);
    }

    @Override
    protected JButton createArrowButton() {
       arrowButton = new JButton();
       arrowButton.setIcon(OrderWidgetUIConstants.DROPDOWN_ARROW_ICON);
       arrowButton.setRolloverIcon(OrderWidgetUIConstants.DROPDOWN_ARROW_HOVER_ICON);
       return arrowButton;
    }    
}

1 Ответ

3 голосов
/ 19 октября 2011

Я пробовал код, который вы разместили здесь, я не видел проблем с клавиатурой, все работает, как я ожидал

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