Thread View: be.comp.programming
2 messages
2 total messages
Started by Ben
Mon, 11 Oct 2004 14:33
TableCellRenderer doet vreemd ...
Author: Ben
Date: Mon, 11 Oct 2004 14:33
Date: Mon, 11 Oct 2004 14:33
46 lines
2503 bytes
2503 bytes
Hi,
Heb iets vreemd voor met een custom TableCellRenderer...
Ik maak een JTable object, met dataModel en dinges, en dus ook een custom
renderer (extends JLabel, implements TableCellRenderer).
Mijn tabel is opgebouwd uit een hele hoop verschillende 'soorten cellen'
waarmee ik bedoel dat er heel wat verschillende opmaak is voor verschillende
cellen (zo heb ik cellen met enkel een boord vanonder en een grijze
achtergrond, dezelfde met een witte achtergrond, grijze achtergrond met
boord vanboven, enzovoort. En nog verschillende fonts en zomeer)
Dus: binnen de renderer: if/else blokken. Iets zoals:
if (row < 20 || row > 50) {
this.setForeground(Color.BLACK);
this.setBackground(Color.WHITE);
}
Ik heb in mijn table bepaald dat de achtergrond wit moet zijn, en de
forground zwart.
Ge zou verwachten dat de rijen tussen rij 20 en rij 50 witte achtergrond
hebben en daarbuiten zwarte
Close, but no cigar: de hele tabel is zwart... :s
Als ik er een else bijplak zoals de onderstaande werkt het wel.
else {
this.setForeground(Color.WHITE);
this.setBackground(Color.BLACK);
}
Kan iemand mij uitleggen wat ik verkeerd doe, of waar het misloopt?
Ik zou verwachten dat je een default opmaak specifieert in de JTable, die
overal wordt toegepast, en dat je met een simpele if dan die default opmaak
kunt wijzigen vanuit een renderer.
Maar niet dus, ik moet echt wel alle mogelijkheden overlopen, en telkens
alle opmaak parameters juist zetten...
Iemand help?
mercikes, en mvg
Ben
Re: TableCellRenderer doet vreemd ...
Author: Djatha
Date: Mon, 11 Oct 2004 19:18
Date: Mon, 11 Oct 2004 19:18
40 lines
2450 bytes
2450 bytes
Ben wrote:
...
> if (row < 20 || row > 50) {
> this.setForeground(Color.BLACK);
> this.setBackground(Color.WHITE);
> }
>
> Ik heb in mijn table bepaald dat de achtergrond wit moet zijn, en de
> forground zwart.
>
> Ge zou verwachten dat de rijen tussen rij 20 en rij 50 witte achtergrond
> hebben en daarbuiten zwarte
U zegt in het bovenste if-statement dat elke rij die of kleiner dan 20 of
groter dan vijftig een witte achtergrond met zwarte voorgrond heeft, ofwel
dezelfde waarden als U bij de standaard bepaald heeft. Dus precies andersom
dan U wilde.
...
> Als ik er een else bijplak zoals de onderstaande werkt het wel.
>
> else {
> this.setForeground(Color.WHITE);
> this.setBackground(Color.BLACK);
> }
Natuurlijk, nu geeft U aan dat de rijen tussen 19 en 51 wit van voor zijn en
zwart van achter. Zonder deze else zouden deze rijen de standaardwaarden
aannemen, en die zijn volgens U juist andersom. Eerst gaf U dat niet aan.
> Ik zou verwachten dat je een default opmaak specifieert in de JTable, die
> overal wordt toegepast, en dat je met een simpele if dan die default
> opmaak kunt wijzigen vanuit een renderer.
Dat doet U in wezen toch ook, enkel moet U uw if-statement anders inpakken:
daar waar niet de standaard gevolgd moet worden, verandert U de kleurtjes.
In dit geval dus enkel tussen rij 19 en rij 51.
--
Djatha
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads