JComboBox in JTable

himbeer

Grünschnabel
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"):

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();
}
}
Danke für Eure Hilfe!
Gruß
 
Sorry, keine Zeit für Beispielcode.
Du musst für die entsprechende Spalte einen eigenen CellRenderer zuweisen. Näheres dazu in der API, evtl. in den Sun Tutorials, aber bestimmt bei dem Codeguru Link, den ich in der Linkliste genannt habe. Darin ist übrigens einiges Interessantes zu Tabellen zu finden!
 
Zurück