🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #1989

[java] JTableModel

#1989
From: Ben
Date: Fri, 15 Oct 2004 11:49
63 lines
3639 bytes
Hallo,

Heb een vraagje over hoe gegevens in een JTable te tonen.

De situatie is de volgende: Ik heb een array van Appointment objects, die
elk twee GregorianCalendars (een begin en eind calendar) en twee Strings
hebben (locatie en persoon). Die array wordt opgebouwd in een methode die
een query op een databasetabel uitvoert om de afspraken voor vandaag te
krijgen. Afspraken worden op het kwartier na gemaakt.
Appointment heeft dus 4 private fields, elk met hun een get en set method.

Bon.
Wat ik nu zou willen is een JTable die in twee kolommen de locatie en
persoon weergeeft waar er een voor appointment bestaat in de database. Dus
feitelijk wil ik die appointments array mappen naar een JTable. En wel zo
dat er een blok wordt weergegeven per afspraak. Ik veronderstel dat het best
is eerst alle rijen in te vullen, en dan de duplicaten eruit te filteren met
een Renderer, die dan ook ineens de borders voor zich neemt en dergelijke.

Dus bijvoorbeeld:
in de database zitten 3 afspraken voor vandaag:
    - meneerX, 14.15 tot 14.45
    - meneerY, 14.45 tot 15.30
    -mevrouwZ, 15.45 tot 16.00

En ik wil een tabel die er als volgt uitziet
14.00
14.15    meneerX
14.30    meneerX
14.45    meneerY
15.00    meneerY
15.15    meneerY
15.30
15.45    mevrouwZ
16.00

Later zal ik dan ervoor zorgen dat de aaneensluitende rijen met dezelfde
informatie gerenderd worden tot een mooi blokje zonder borders binnenin en
een dikkere border errond, met kleurtjes enzovoort.

Wat ik heb geprobeerd is hetvolgende:
ik heb twee methodes getIntTime, een met een GregorianCalendar als argument
en een met een rijnummer(integer) als argument. Beide methodes retourneren
een integer in het formaat hhmm (dus: een Calendar met 16 uur en 15 minuten
zal de integer 1615 geven). Mijn tabel heeft 24*4 rijen, een per kwartier in
een dag. de methode getIntTime(row) geeft de tijds-integer voor een bepaalde
rij weer.
Wat ik dus wilde proberen was van per rij te kijken of er een afspraak voor
bestaat, en indien ja, de betreffende persoon en locatie in te vullen in de
cellen. Dit lukt echter niet, en lijkt mij ook niet echt elegant, vermits ik
de array van Appointment objects constant (voor elke cel!) moet doorlopen...

Vraag 1: Is dit de juiste methode van werken (ik bedoel een array van
objects mappen naar een TableModel dat later gerenderd wordt)
Vraag2: performantie-issues met deze manier van werken?
Vraag3: hoe doe ik de mapping tussen array van objects en een TableModel?
Want dat met die integers werkt niet om een of andere reden.

HELP!

Dankuwel ;)

Ben
Technical Details
Message-ID: <ckodgf$30pk$1@nl-news.euro.net>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!news.glorb.com!news-in.ntli.net!newsrout1-win.ntli.net!ntli.net!border2.nntp.ams.giganews.com!nntp.giganews.com!news2.euro.net!nl-news.euro.net!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Thread: fcea4,aa80de61f195be9,start
X-Google-Attributes: gidfcea4,public
X-Google-Language: DUTCH,ASCII-7-bit
Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!news.glorb.com!news-in.ntli.net!newsrout1-win.ntli.net!ntli.net!border2.nntp.ams.giganews.com!nntp.giganews.com!news2.euro.net!nl-news.euro.net!not-for-mail
From: "Ben" <tharkis@hotmail.com>
Newsgroups: be.comp.programming
Subject: [java] JTableModel
Date: Fri, 15 Oct 2004 13:49:16 +0200
Organization: EuroNet Internet
Lines: 69
Message-ID: <ckodgf$30pk$1@nl-news.euro.net>
NNTP-Posting-Host: u81-11-159-31.adsl.scarlet.be
X-Trace: nl-news.euro.net 1097840975 99124 81.11.159.31 (15 Oct 2004 11:49:35 GMT)
X-Complaints-To: usenet@nl-news.euro.net
NNTP-Posting-Date: Fri, 15 Oct 2004 11:49:35 +0000 (UTC)
Cancel-Lock: sha1:5rKB4KkhUMMzqwjFNwy0A/nvwuM= sha1:PP08XdbwfYlsOzWnxZ7VFgojrI8=
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2741.2600
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2742.200