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. 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"):
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ß