Morgen,
ich hab in einer Spalte einer JTable eine JComboBox.class und frag mich gerade ob es möglich ist, dass in der ersten Zeile in der JComboBox gewisse Items drinnen sind, in der zweiten Zeile der JComboBox andere Items u.s.w.
oder müssen in allen JComboBoxen die gleichen Items drinnenstehen?
ich hab in einer Spalte einer JTable eine JComboBox.class und frag mich gerade ob es möglich ist, dass in der ersten Zeile in der JComboBox gewisse Items drinnen sind, in der zweiten Zeile der JComboBox andere Items u.s.w.
oder müssen in allen JComboBoxen die gleichen Items drinnenstehen?
Code:
public class Main {
public Main() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTable table = new JTable();
DefaultTableModel model = (DefaultTableModel)table.getModel();
model.addColumn("A", new Object[]{"item1"});
model.addColumn("B", new Object[]{"item2"});
model.addRow(new Object[]{"item2"});
String[] values = new String[]{"item1", "item2", "item3"};
int vColIndex = 0;
TableColumn col = table.getColumnModel().getColumn(vColIndex);
col.setCellEditor(new ComboBoxEditor(values));
col.setCellRenderer(new ComboBoxRenderer(values));
f.add(table);
f.setBounds(10, 10, 700, 500);
f.setVisible(true);
}
public static void main(String[] args) {
new Main();
}
class ComboBoxRenderer extends JComboBox implements TableCellRenderer {
public ComboBoxRenderer(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());
}
setSelectedItem(value);
return this;
}
}
class ComboBoxEditor extends DefaultCellEditor {
public ComboBoxEditor(String[] items) {
super(new JComboBox(items));
}
}
}