B
bygones
Gast
Hi,
so, nun beschäftige ich auch mal (richtig) mit JTables - und stoß schon ans Ende...
Ich habe eine Tabelle mit drei unterschiedlichen Arten von Spalten. In der ersten soll man einen Text eingeben können, die anderen beiden sollen zwei untersch. JComboboxen sein. Diese Arten von Spalten wiederholen sich in der Tabelle öfters.
Ok. ich habe eine Klasse die JCombobox erweitert und den TableCellRenderer implementiert - nur habe ich keine Ahnung was ich in den get.... Methode reinschreiben muss:
In meiner Table Klasse will ich dann natürlich die Renderer setzen.
Wenn ich keinen CellEditor hinzufüge, erscheinen die JComboboxen gar nicht. Nun kann ich zwar die Boxen auswählen, er übernimmt mir aber nicht den ausgewählten Wert ?! Außerdem kann ich durch Doppelklick auf die Boxen sie zum verschwinden bringen und Text in das Feld schreiben, in dem eigentlich die Combobox sein sollte....
Was mache ich falsch bzw. wie mach ichs richtig ?
THX
so, nun beschäftige ich auch mal (richtig) mit JTables - und stoß schon ans Ende...
Ich habe eine Tabelle mit drei unterschiedlichen Arten von Spalten. In der ersten soll man einen Text eingeben können, die anderen beiden sollen zwei untersch. JComboboxen sein. Diese Arten von Spalten wiederholen sich in der Tabelle öfters.
Ok. ich habe eine Klasse die JCombobox erweitert und den TableCellRenderer implementiert - nur habe ich keine Ahnung was ich in den get.... Methode reinschreiben muss:
Code:
public class ComboRenderer extends JComboBox implements TableCellRenderer {
public ComboRenderer(Object[] items) {
super(items);
}
/* (non-Javadoc)
* @see javax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int)
*/
public Component getTableCellRendererComponent(
JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column) {
setSelectedItem(value);
return this;
}
}
In meiner Table Klasse will ich dann natürlich die Renderer setzen.
Code:
TableColumn column;
for (int i = 0; i < getModel().getColumnCount(); i++) {
column = getColumnModel().getColumn(i);
switch (i % 3) {
case 0 :
if (i == 0) {
column.setMinWidth(85);
}
else {
// erste checkbox spalte
column.setWidth(12);
column.setCellRenderer(new ComboRenderer(roomItems));
column.setCellEditor(new DefaultCellEditor(roomBox));
}
break;
case 1 :
// eingabe feld spalte
column.setMinWidth(90);
break;
case 2 :
// zweite spalte
column.setWidth(15);
column.setCellRenderer(new ComboRenderer(feeItems));
column.setCellEditor(new DefaultCellEditor(feeBox));
}
}
Was mache ich falsch bzw. wie mach ichs richtig ?
THX