Ik heb een JTable waarin een kolom zit waar JComboxen in zitten.
In elke row die ik toevoeg zit dus een Combobox, en deze wil ik vullen met verschillende items.
Eerst maak ik de Table aan, en de custom renderers:
Hierna wil ik rows kunnen toevoegen, waarbij de rows dus mogelijk verschillende items in de combobox kunnen krijgen.
Hoe krijg ik dit voor elkaar? Deze code werkt niet:
Bovendien bestaat nu de lijst in elke rij uit 1 item, dat moeten er ook meer worden.
Ik weet dat een HashMap als datatype in dit voorbeeld niet logisch lijkt, maar dit voorbeeld is vereenvoudigd.
In elke row die ik toevoeg zit dus een Combobox, en deze wil ik vullen met verschillende items.
Eerst maak ik de Table aan, en de custom renderers:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| JComboBox comboBox = new JComboBox(); JTable jTable = new JTable(); DefaultTableModel tableModel = new DefaultTableModel(); tableModel.addColumn("Kolom"); jTable.setModel(tableModel); comboBox.setRenderer(new DefaultListCellRenderer() { @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); if (value instanceof Map) { Map m = (HashMap)value; setText((String)m.get("text")); } return this; } }); TableColumn boxKolom = jTable.getColumnModel().getColumn(0); boxKolom.setCellEditor(new DefaultCellEditor(comboBox)); |
Hierna wil ik rows kunnen toevoegen, waarbij de rows dus mogelijk verschillende items in de combobox kunnen krijgen.
Hoe krijg ik dit voor elkaar? Deze code werkt niet:
Java:
1
2
3
4
5
6
7
| Map<String, String> item1 = new HashMap<String, String>(); item1.put("text", "rij 1"); Map<String, String> item2 = new HashMap<String, String>(); item2.put("text", "rij 2"); tableModel.addRow(new Object[]{item1}); tableModel.addRow(new Object[]{item2}); |
Bovendien bestaat nu de lijst in elke rij uit 1 item, dat moeten er ook meer worden.
Ik weet dat een HashMap als datatype in dit voorbeeld niet logisch lijkt, maar dit voorbeeld is vereenvoudigd.