hej!
mam taki problem: chciałbym, aby w jednej kolumnie tabeli były komórki, które są rozwijalnymi listami (ComboBox). Dla każdego wiersza w tabeli zawartość listy byłaby inna. Niestety nie potrafię za bardzo tego zrobić :/
w funkcji dodającej wiersz do tabeli jest coś takiego:
Object[] movieData = { id, t, g, ry, c, rt, d, <b>stuff</b>, m, desc };
tableModel.insertRow(table.getRowCount(), movieData);
(stuff jest ComboBoxem).
stworzyłem renderer dla komórek które mają być listami:
class ComboBoxRenderer extends JComboBox implements TableCellRenderer {
public Component getTableCellRendererComponent(
JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column) {
JComboBox combo = (JComboBox)value;
return combo;
}
}
jeśli dobrze zrozumiałem dokumentację, value przyjmuje przekazywane wyżej combo (nazwane stuff).
oczywiście dodałem ten renderer do odpowiedniej kolumny:
table.getColumnModel().getColumn(7).setCellRenderer(new ComboBoxRenderer());
niestety zamiast wyświetlanego combo pokazuje mi tylko informacje o tym ComboBoxie:
javax.swing.JComboBox[,-126,-15,0x0,invalid,layout=com.sun.java.swing.plaf.windows.WindowsComboBoxUI$3,alignmentX=0.0,alignmentY=0.0,border=com.sun.java.swing.plaf.windows.XPStyle$XPStatefulFillBorder@10d593e,flags=16777544,maximumSize=,minimumSize=,preferredSize=,isEditable=false,lightWeightPopupEnabled=true,maximumRowCount=8,selectedItemReminder=s]
jeśli dodam do tej komórki CellEditor, wtedy pokazuje mi niby pierwszy element przekazanych danych, ale po rozwinięciu lista jest pusta :/
table.getColumnModel().getColumn(7).setCellEditor(new DefaultCellEditor(new JComboBox()));
na pewno robię jakiś głupi błąd, ale nie potrafię w tej chwili znaleźć przyczyny, dlaczego tak się dzieje. z góry dzięki za pomoc, to dla mnie ważne.
pozdrawiam!