Могу ли я изменить цвет фона всплывающего окна JComboBox для существующего объекта? - PullRequest
5 голосов
/ 12 ноября 2010

У меня есть существующий объект JComboBox. Я могу изменить многие из его свойств, используя внутренние методы. Однако я не смог найти похожие методы для настройки внешнего вида всплывающего окна, в частности, цвета фона всплывающего окна. У меня есть существующий объект, поэтому я хочу использовать его существующие методы / свойства, а не писать отдельный класс. Возможно ли это?

Примечание: этот вопрос НЕ такой же, как и связанный вопрос выше (в котором неверно указано, что на этот вопрос уже есть ответ): этот вопрос задан относительно выбранного элемента bgcolor (в окне редактирования в выпадающем списке); Я спрашиваю о всплывающем окне bgcolor .

Ответы [ 3 ]

3 голосов
/ 10 декабря 2010

Как сказал eugener, использование пользовательского ListCellRenderer определенно является правильным способом сделать это.Вам просто нужно создать класс, который расширяет DefaultListCellRenderer.Этот рендерер по умолчанию расширяет JLabel, чтобы его было проще понять!Вам просто нужно позвонить на setBackground().

JComboBox combo = new JComboBox(new String[] { "A", "B", "C", "D" });
combo.setRenderer(new DefaultListCellRenderer() {
    public void paint(Graphics g) {
        setBackground(Color.YELLOW);
        setForeground(Color.RED);
        super.paint(g);
    }
});
1 голос
/ 12 ноября 2010

Вам нужно будет создать пользовательский рендерер comboxbox.Больше информации здесь: http://download.oracle.com/javase/tutorial/uiswing/components/combobox.html#renderer

0 голосов
/ 12 ноября 2010

Вы пробовали:

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