Hi
Ich hab in meiner GUI eine Tabelle, die als Model meine eigene Klasse besitzt. Diese TableModel klasse ist wiederum von AbstractTableModel abgeleitet. Ich hätte jetzt gerne in der zweiten Spalte (TableColum 1) meiner Tabelle eine JComboBox. Ich hab deshalb zwei klassen gemacht nämlich MyComboBoxEditor
und MyComboBoxRenderer
und in meiner GUI klasse
Wenn ich das so mache, dann erscheint die ComboBox zwar ständig in der zweiten Spalte der Tabelle, lässt sich aber nicht aufklappen
Meine Frage: Wie kann ich das machen, dass die Combobox nur dann erscheint, wenn ich mit der Maus auf eine Zelle in der Zweiten Spalte klicke?
Danke für schnelle Antworten
Ich hab in meiner GUI eine Tabelle, die als Model meine eigene Klasse besitzt. Diese TableModel klasse ist wiederum von AbstractTableModel abgeleitet. Ich hätte jetzt gerne in der zweiten Spalte (TableColum 1) meiner Tabelle eine JComboBox. Ich hab deshalb zwei klassen gemacht nämlich MyComboBoxEditor
Java:
public class MyComboBoxEditor extends DefaultCellEditor {
public MyComboBoxEditor(String[] items) {
super(new JComboBox(items));
}
}
Java:
public class MyComboBoxRenderer extends JComboBox implements TableCellRenderer {
public MyComboBoxRenderer(String[] items) {
super(items);
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if (isSelected) {
setForeground(table.getSelectionForeground());
super.setBackground(table.getSelectionBackground());
} else {
setForeground(table.getForeground());
setBackground(table.getBackground());
} // Select the current value
setSelectedItem(value);
return this;
}
}
Java:
String[] values = new String[]{"item1", "item2", "item3"};
int vColIndex = 1;
TableColumn col = table.getColumnModel().getColumn(vColIndex);
col.setCellEditor(new MyComboBoxEditor(values));
col.setCellRenderer(new MyComboBoxRenderer(values));
Wenn ich das so mache, dann erscheint die ComboBox zwar ständig in der zweiten Spalte der Tabelle, lässt sich aber nicht aufklappen
Meine Frage: Wie kann ich das machen, dass die Combobox nur dann erscheint, wenn ich mit der Maus auf eine Zelle in der Zweiten Spalte klicke?
Danke für schnelle Antworten