Hallo!
Ich habe mehrere Forenbeiträge über Renderer durchgelesen und habe auch schon Erfolg damit gehabt.
Nur ein Problem:
Ich möchte in einer JTable in einer Zelle eine JComboBox darstellen, nur jedoch werden mehrere Werte in der ComboBox nicht dargestellt werden - nur der jeweils erste Wert (im Beispiel: "1. Wert"):
Danke für Eure Hilfe!
Gruß
Ich habe mehrere Forenbeiträge über Renderer durchgelesen und habe auch schon Erfolg damit gehabt.

Ich möchte in einer JTable in einer Zelle eine JComboBox darstellen, nur jedoch werden mehrere Werte in der ComboBox nicht dargestellt werden - nur der jeweils erste Wert (im Beispiel: "1. Wert"):
Code:
import java.awt.Component;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableCellRenderer;
public class JTableDemo extends JFrame {
private JTable table;
public JTableDemo() {
super("JTableDemo");
setDefaultCloseOperation(EXIT_ON_CLOSE);
String[] header = { "ABC", "DEF", "GHI" };
String[][] data = { { "1A", "1B", "1C" }, {
"2A", "2B", "2C" }, {
"3A", "3B", "3C" }
};
table = new JTable(data, header);
final JComboBox combo = new JComboBox();
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer() {
public Component getTableCellRendererComponent(
JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column) {
String val = (String) value;
if (isSelected) {
if (val.startsWith("2") && val.endsWith("B")) {
combo.addItem("1.Wert");
combo.addItem("2.Wert");
combo.addItem("3.Wert");
return combo;
} else {
return new JTextField(val);
}
} else {
return new JLabel(val);
}
}
};
table.getColumn("DEF").setCellRenderer(renderer);
getContentPane().add(table);
pack();
setVisible(true);
}
public static void main(String[] args) {
new JTableDemo();
}
}
Gruß