Toon posts:

[Java] jtable cell color niet mogelijk met jcombobox erin

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben een tabel aan het maken (3 kolommen met variable aantal rijen). In kolom 3 zit een combobox met een 2-tal voorgedefinieerde waarden. Verder zit aan de table een cellrenderer gekoppeld. Hier volgt de renderer code.

[code=java] renderer = (new DefaultTableCellRenderer() {
public Component getTableCellRendererComponent(JTable rtable, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component cell = super.getTableCellRendererComponent(rtable, value, isSelected, hasFocus, row, column);
if (column == 2) {
cell.setBackground(Color.RED);
}

return cell;
}
});

tableNumbers.setDefaultRenderer(String.class, renderer);
[/code=java]

Nu is het geval dat met deze renderer de 1e en 2e kolom rood worden gekleurd maar ik zou verwachten dat alleen kolom 2 rood wordt gekleurd. Op het moment dat je een combobox in een cell zet wordt de renderer niet meer aangeroepen voor deze kolom. Ik heb dan ook een event gemaakt die de renderer met de juiste waarden aanroept. Na deze wijziging kleurt de volledige tabel behalve de 3e kolom.
1) Hoe kan dat?
2) Hoe kan ik het oplossen?

met vele dank!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 01:08
Volgens mij gebruikt een cellRenderer één object om de hele cell te renderern. Het is dus niet zo dat een tabel van 3 kolommen en 5 rijen bijvoorbeeld 15 JLabels bevat. Omdat je nu in column 2 de achtergrondkleur op rod zet, en nooit op een andere kleur, wordt de complete tabel gerenderd met een rode achtergrond kleur. Je zou dus iets moeten doen als:
Java:
1
2
3
4
5
if (column == 2)
  cell.setBackground(Color.RED); 
else
  cell.setBackground(Een andere kleur)
return cell;

Roomba E5 te koop


Verwijderd

Topicstarter
sig69 schreef op donderdag 29 mei 2008 @ 14:18:
Volgens mij gebruikt een cellRenderer één object om de hele cell te renderern. Het is dus niet zo dat een tabel van 3 kolommen en 5 rijen bijvoorbeeld 15 JLabels bevat. Omdat je nu in column 2 de achtergrondkleur op rod zet, en nooit op een andere kleur, wordt de complete tabel gerenderd met een rode achtergrond kleur. Je zou dus iets moeten doen als:
Java:
1
2
3
4
5
if (column == 2)
  cell.setBackground(Color.RED); 
else
  cell.setBackground(Een andere kleur)
return cell;
In dit geval krijgt alles behalve de 2e column de "andere kleur". Maar als er een combobox in die cell staat krijgt de cell geen rode kleur maar ook niet de "andere kleur".

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 01:08
Een combobox rendert wat anders dan een "normaal" component, voor een combobox zou je zoiets kunnen proberen:
Java:
1
comboBox.getEditor().getEditorComponent().setBackground(...)

Roomba E5 te koop


  • Evilbee
  • Registratie: November 2002
  • Laatst online: 18:51
Verwijderd schreef op donderdag 29 mei 2008 @ 14:31:
[...]


In dit geval krijgt alles behalve de 2e column de "andere kleur". Maar als er een combobox in die cell staat krijgt de cell geen rode kleur maar ook niet de "andere kleur".
3e column, de index begint bij 0 ;)

LinkedIn - Collega worden?


Verwijderd

Topicstarter
Evilbee schreef op donderdag 29 mei 2008 @ 14:52:
[...]

3e column, de index begint bij 0 ;)
Tuurlijk dat snap ik. In ieder geval, we begrijpen elkaar.

Verwijderd

Topicstarter
sig69 schreef op donderdag 29 mei 2008 @ 14:40:
Een combobox rendert wat anders dan een "normaal" component, voor een combobox zou je zoiets kunnen proberen:
Java:
1
comboBox.getEditor().getEditorComponent().setBackground(...)
Nope, geen succes. Op het moment van openklappen dan komt de kleur wel tevoorschijn maar als je dan iets selecteert gaat de background weer terug naar grijs/wit. De bedoeling is dat de kleur blijft.

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 01:08
Kijk anders ook nog even naar de ListCellRenderer interface

Roomba E5 te koop

Pagina: 1