Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[Java]Slim objecten in tabelvorm weergeven

Pagina: 1
Acties:

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Topicstarter
Hoi,


Ik ben een programma aan het schrijven en wil daarbij flexibel data laten zien.
Het gaat hier voorlopig om een simpel boekhoudpakketje, waarbij ik dingen als een klant enzo wil tonen (no problem , klasse met NAW , emailadres en nog wat dingen).

Nu werkt dat allemaal prima, echter wil ik dit tonen in een tabelletje waarbij je kunt soteren door op de kolomnaam te klikken (vrij bekend model).

DIt is prima te implementeren, maar ik ben dan wel een berg boilerplate aan het schrijven.

Gevolg is dus dat ik het dynamisch wil gaan doen, zodat ook klassen zoals orders etc gewoon netjes gelist kunnen worden.
Hebben mensen hier ideeen voor?

De ideeen die ik heb:
- Ik kan het met reflectie gaan doen neem ik aan
- een functie die een stel kolomnamen en bijbehorende waardes per object retourneert en dan de GUI op basis hiervan de tabel tonen.


Iemand nog meer ideeen? Of is hier een leuke standaard oplossing voor? :).

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 08:25

Janoz

Moderator Devschuur®

!litemod

Gaat het hier om een swing applicatie? In principe kan een JTable alles wat jij wilt en meer. ( http://java.sun.com/docs/...ing/components/table.html ). Waarom is deze nog niet toereikend?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Topicstarter
Swing ja.

Dat is inderdaad een leuke, maar dit was meer als oefening bedoeld om zelf wat te coden\denken\discussieren.
Iig vond ik het een wel intrigerend probleem, en wilde ik eens brainstormen hoe je zoiets nou aanpakt :).

  • LAN
  • Registratie: Oktober 2000
  • Niet online

LAN

Ik kan me herinneren ooit zoiets gebouwd te hebben.

De requirements waren toen:
Het beheren van een groot aantal domein objecten die eens in de zoveel tijd uitgebreid kunnen worden. Het programma moest hier rekening mee houden zodat wanneer een object uitgebreid werd, de rest van de code niet aangepast hoefde te worden.
De objecten moesten in een tabelvorm gezet worden en sorteerbaar zijn.

Je kunt de volgende onderdelen hanteren:
  • Voor het dynamisch bepalen van attributen van de domeinobjecten kun je inderdaad gebruik maken van reflectie.
  • Voor het tonen van de objecten kun je gebruik maken van een JTable i.c.m. een TableModel.
  • En nu wordt m'n geheugen wat mistig.
  • De TableModel kun je zelf sorteerbaar maken door er een sort() methode in op te nemen die de interne ArrayList sorteert met Collections.sort() i.c.m. een Comparator.
  • Aan de JTable kun je een header toevoegen die als er op geklikt wordt de sort functie aanroept. Hier zul je dan wel iets moeten bedenken hoe je bepaalt op welke kolom geklikt wordt. De objecten in de ArrayList zul je moeten sorteren op het attribuut wat overeenkomt met die kolom.

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Topicstarter
^^ Bedoelde ik dus.

Zal vanavond eens kijken of ik een proof of concept kan maken, erg leuke reply :).

Verwijderd

Ik moet eerlijk zeggen dat de laatste keer dat ik serieus met Java applicaties heb gemaakt met een 'echte' GUI al een jaartje of 2, 3 geleden is. Ik zit tegenwoordig diep in de C# met wat J2EE serverside.
Als ik dit in C# zou doen zou ik de JTable equivalent van C# (Datagrid oid?) pakken en vervolgens Reflector daarop loslaten.

Reflector is een tooltje waarmee je gecompileerde code kunt decompilen, en zo kan zien wat er eigenlijk intern gebeurt. Is er niet ook zoiets voor Java? Lijkt me leerzaam :)

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Topicstarter
Wat wil je met decompilen bereiken?

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 29-10 20:56

Macros

I'm watching...

Sorteren in een tabel in Swing gaat sinds Java 6.0 met de TableFilter geloof ik. Moet je even op zoeken.

"Beauty is the ultimate defence against complexity." David Gelernter


Verwijderd

Verwijderd schreef op maandag 09 juni 2008 @ 09:52:
Reflector is een tooltje waarmee je gecompileerde code kunt decompilen, en zo kan zien wat er eigenlijk intern gebeurt. Is er niet ook zoiets voor Java? Lijkt me leerzaam :)
Nee, niet Reflector...maar Reflection. Klein verschil in schrijfwijze, groot verschil in wat het daadwerkelijk doet ;).

Reflector is inderdaad voor het reverse engineeren van C# applicaties, Reflection is er voor het doorlopen van alle eigenschappen (properties) van een klasse :).
Reflection

The classes in the System.Reflection namespace, together with System.Type, allow you to obtain information about loaded assemblies and the types defined within them, such as classes, interfaces, and value types.

[ Voor 18% gewijzigd door Verwijderd op 09-06-2008 16:01 ]


  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Topicstarter
Ja ik noemde reflexie al, daar heb je in Java echter geen losse tool voor nodig ;).
Heb het wel eens icm AspectJ gebruikt.

Verwijderd

Boudewijn schreef op maandag 09 juni 2008 @ 16:08:
Ja ik noemde reflexie al, daar heb je in Java echter geen losse tool voor nodig ;).
Heb het wel eens icm AspectJ gebruikt.
Ik bedoelde wel degelijk Reflector, niet reflectie als framework eigenschap. Ik doelde op dat Janoz opmerkte dat een JTable al doet wat jij wilt bereiken, en ongetwijfeld nog veel meer. Met die informatie op zak zou ik zeggen kijk eens wat die JTable eigenlijk onder water allemaal uitspookt. Dmv decompilen kan je kijken wat er ongeveer gebeurt, wat je misschien tot nieuwe inzichten brengt of je eigen conclusies bevestigt.

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Topicstarter
Hmmm zal morgen eens kijken of ik dat voor elkaar kan krijgen.
Bedankt voor de tip :).

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 17-11 20:32

NetForce1

(inspiratie == 0) -> true

In java is het niet nodig om daarvoor te decompileren, de source wordt gewoon meegeleverd met de jdk.

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • Mafkees
  • Registratie: Oktober 2003
  • Niet online
Verwijderd schreef op dinsdag 10 juni 2008 @ 01:23:
[...]


Ik bedoelde wel degelijk Reflector, niet reflectie als framework eigenschap. Ik doelde op dat Janoz opmerkte dat een JTable al doet wat jij wilt bereiken, en ongetwijfeld nog veel meer. Met die informatie op zak zou ik zeggen kijk eens wat die JTable eigenlijk onder water allemaal uitspookt. Dmv decompilen kan je kijken wat er ongeveer gebeurt, wat je misschien tot nieuwe inzichten brengt of je eigen conclusies bevestigt.
Ik zou gewoon naar http://java.sun.com/ gaan en de source van de SDK die je hebt downloaden :P Of de API bekijken natuurlijk :)
Pagina: 1