Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Отображение JList в ячейке JTable


Автор: dsp 30.9.2005, 11:26
Подскажите как отобразить список JList в ячейке JTable.

Есть класс.
Код

public class ListRenderer extends DefaultTableCellRenderer {

....
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        String[] items = (String[])value;
        JList list = new JList(items);
        return list;
    }
}

....
table.getColumn("Attachments").setCellRenderer(new ListRenderer());


В итоге вместо списка отображается одно значение.

В чем может быть причина

Автор: batigoal 30.9.2005, 11:34
Вот тут есть готовый пример, как сделать в ячейке ComboBox:
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#combobox

Для JList будет аналогично.

Автор: dsp 30.9.2005, 11:51
Это хорошо, но для JList нет конструктора DefaultCellEditor.
Есть для однострочных компонентов типа JCheckBox, JComboBox, JTextField.
Поэтому и возникла необходимость в создании наследника для JList-а.
Скажите лучше, у кого-нибудь получалось отобразить или нет что-нибудь многострочное в ячейке JTable?

Автор: batigoal 30.9.2005, 12:41
Там же есть и про этот случай:
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#editor

Утверждается, что
Цитата
Your cell editor class needs to define at least two methods — getCellEditorValue and getTableCellEditorComponent


И приведен пример с написанием своего эдитора.

Автор: LSD 30.9.2005, 12:42
Ты пробовал увеличить высоту строк?

Автор: batigoal 30.9.2005, 12:44
Только про отображение - это скорее к рендереру, а не к едитору.
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#renderer

Автор: dsp 30.9.2005, 13:14
2LSD:
Спасибо, действительно изменение высоты строки помогло.

2Lamer George:
Да только рендеринг, ничего редактировать не надо было.

Автор: LSD 30.9.2005, 14:34
Кстати а зачем нужен JList если он используется только как рендерер? Ведь таким макаром скролл работать все равно не будет, а несколько строк текста можно отобразить и попроще.
Код
String text = "<html>Row 1<br>Row 2<br>Row 3</html>";
JTable table = new JTable(new String[][] { {text, text}, {text, text} }, new String[] {"Column 1", "Column 2"});
table.setRowHeight(50);

JFrame frame = new JFrame("Ьгд");
frame.getContentPane().add(new JScrollPane(table));
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)