JCombobox, редактор и визуализатор, связанные

Как JCombobox ListCellRenderer, у меня есть такой класс:

class ZComboBoxRenderer extends JPanel implements ListCellRenderer{
private ZGrid grid;
public ZComboBoxRenderer(ZGrid grid) {
    setLayout(new BorderLayout());
    this.grid = grid;
    add(new JScrollPane(grid), BorderLayout.CENTER);
}
public ZGrid getGrid(){
    return grid;
}
@Override
public Component getListCellRendererComponent(JList list, Object value,
        int index, boolean isSelected, boolean cellHasFocus) {
    grid.fetchSQL();
    return this;
}
}

ZGrid здесь, расширяет JTable.

В качестве ListCellRendererComponent я предоставляю JPanel с ZGrid внутри для JCombobox. Проблема в том, что в своем списке этот ZGrid рисует правильно. Но он также рисуется внутри редактора JCombobox. Я загрузил изображение, чтобы показать это лучше.

Есть ли способ отделить редактор от списка?


замещающий текст http://img444.imageshack.us/img444/564/soex.jpg< /а>


person Erkan Haspulat    schedule 27.12.2009    source источник


Ответы (1)


Насколько я понимаю, вы реализуете собственный рендерер для своего JComboBox, и хотя он правильно отображает содержимое раскрывающегося списка, он полностью искажает текущее значение поля со списком.

Я вижу в вашем распоряжении два варианта:

  1. вы можете расширить компонент пользовательского интерфейса для вашего JComboBox и переопределить метод paint, чтобы получить собственное представление вашей сетки для вашего текущего представления значений. Это было бы довольно быстрым доказательством концепции, но оно создает проблемы, поскольку вам нужно будет расширить каждый пользовательский интерфейс (металл, Windows, Mac и т. д.), с которым, как вы ожидаете, будет работать ваше приложение.

  2. вы можете свернуть свой собственный раскрывающийся список и сделать его похожим на JComboBox. Это было бы не так сложно сделать и в качестве POC, но сложность здесь заключается в обработке различных вводов с клавиатуры, которые влияют на выбор и навигацию по комбинированному полю.

person akf    schedule 15.02.2010
comment
Прошло некоторое время с тех пор, как я задал этот вопрос, и я изменил свой подход к этой проблеме. Спасибо за ответ. - person Erkan Haspulat; 17.02.2010