Beste:
Ik heb het volgende probleem met een JTable:

Ik wil graag dat als ik 1 cel selecteer dat dan de HELE row een kleur krijgt.
Zoals jullie zien pakt hij de 1e kolom niet :x
Ik zal even wat stukken source laten zien hoe ik de rij een kleur geef.
Het maken van de JTable:
Stukje uit mijn TableModel (de add/remove/get functies zijn niet van belang dus die heb ik weggelaten)
En dan mijn CellRender class:
Volgensmij is dit alle relevante informatie mbt de tabel.
Het enige wat ik zelf kan bedenken is dat kolom 0 (de 1e) een Integer is in plaats van een string... maar waarom dat dan niet zou werken is mij een raadsel.
Wat mij opvalt is deze output van de regel: " System.out.println("row: " + row + " colom: " + column);"
Slechts 5 kolommen terwijl er 6 staan.
Met google kom ik niet veel verder behalve dat mijn manier zou moeten werken
Heeft iemand een idee waar en wat er fout gaat?
Ik heb het volgende probleem met een JTable:

Ik wil graag dat als ik 1 cel selecteer dat dan de HELE row een kleur krijgt.
Zoals jullie zien pakt hij de 1e kolom niet :x
Ik zal even wat stukken source laten zien hoe ik de rij een kleur geef.
Het maken van de JTable:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| table = new JTable(); JScrollPane scrollPane = new JScrollPane(table); table.setFillsViewportHeight(true); table.setRowSelectionAllowed(true); table.setColumnSelectionAllowed(false); table.setCellSelectionEnabled(false); table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); tableModel = new TableModel(keyVector); table.setModel(tableModel); table.setDefaultRenderer(String.class, new CellRender()); table.setAutoCreateRowSorter(true); RowSorter<?> sorter = table.getRowSorter(); sorter.toggleSortOrder(0); scrollPane.setPreferredSize(new Dimension(520, 520)); add(scrollPane); |
Stukje uit mijn TableModel (de add/remove/get functies zijn niet van belang dus die heb ik weggelaten)
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| public class TableModel extends AbstractTableModel { // Names of the columns public String[] m_colNames = { "ID", "Naam", "Key", "Tag(s)", "Available", "Notes" }; // Types of the columns. public Class[] m_colTypes = { Integer.class, String.class, String.class, String.class, String.class, String.class }; // store the data Vector m_DataVector; //meer methode hier } |
En dan mijn CellRender class:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| public class CellRender extends DefaultTableCellRenderer { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); System.out.println("row: " + row + " colom: " + column); if (table.isRowSelected(row)) { // System.out.println("row: " + row + " colom: " + column); c.setBackground(Color.PINK); } return c; } } |
Volgensmij is dit alle relevante informatie mbt de tabel.
Het enige wat ik zelf kan bedenken is dat kolom 0 (de 1e) een Integer is in plaats van een string... maar waarom dat dan niet zou werken is mij een raadsel.
Wat mij opvalt is deze output van de regel: " System.out.println("row: " + row + " colom: " + column);"
code:
1
2
3
4
5
| row: 4 colom: 1 row: 4 colom: 2 row: 4 colom: 3 row: 4 colom: 4 row: 4 colom: 5 |
Slechts 5 kolommen terwijl er 6 staan.
Met google kom ik niet veel verder behalve dat mijn manier zou moeten werken

Heeft iemand een idee waar en wat er fout gaat?
3780wP (18x 210wP EC Solar) | 2x Marstek Venus E (5.12kWh)