H
hansKanns
Gast
Hallo zusammen,
ich würde gern bei meiner Suche die Möglichkeit einbauen die Suchart mit zu Hinterlegen. Diese soll in der 3 Zeile hinterlegt sein in Form einer JComboBox. Ich habs nun soweit schon geschaft das die Darstellung schon einmal Korrekt ist allerdings wenn ich die oberen beiden Zeilen anklicke wird immer der erste Wert der Combobox gesetzt warum? Was muss ich noch ändern?
ich würde gern bei meiner Suche die Möglichkeit einbauen die Suchart mit zu Hinterlegen. Diese soll in der 3 Zeile hinterlegt sein in Form einer JComboBox. Ich habs nun soweit schon geschaft das die Darstellung schon einmal Korrekt ist allerdings wenn ich die oberen beiden Zeilen anklicke wird immer der erste Wert der Combobox gesetzt warum? Was muss ich noch ändern?
Java:
public class SuchTable extends JTable {
private static final long serialVersionUID = 4869797882559306187L;
public SuchTable() {
DefaultTableModel model = new DefaultTableModel();
String[] ident = { "Suchwort", "Bezeichnung" };
model.setColumnIdentifiers(ident);
model.setRowCount(3);
this.setModel(model);
String[] values = {"Wert 1","Wert 2","Wert 3"};
TableColumn col = this.getColumnModel().getColumn(0);
col.setCellEditor(new ComboBoxEditor(values));
col.setCellRenderer(new ComboBoxRenderer(values));
col = this.getColumnModel().getColumn(1);
col.setCellEditor(new ComboBoxEditor(values));
col.setCellRenderer(new ComboBoxRenderer(values));
}
public class ComboBoxRenderer extends JComboBox implements TableCellRenderer {
private static final long serialVersionUID = -6097075752647202913L;
public ComboBoxRenderer(String[] items) {
super(items);
}
@Override
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());
}
if (row == 2) {
super.setSelectedItem(value);
return this;
} else {
return new JLabel(value == null ? "" : value.toString());
}
}
}
public class ComboBoxEditor extends DefaultCellEditor {
private static final long serialVersionUID = -8432519253346229165L;
public ComboBoxEditor(String[] items) {
super(new JComboBox(items));
}
public Component getComponent() {
return new JTextField();
}
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
if (row == 2) {
return super.getTableCellEditorComponent(table, value, isSelected,
row, column);
} else {
return new JTextField(value == null ? "" : value.toString());
}
}
}
}