[Java] Object in een combolist krijgen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • com2,1ghz
  • Registratie: Oktober 2004
  • Laatst online: 11:34
Hey Tweakers, Ik zit met een heel groot probleem met mijn project en ik ben er al de hele dag mee bezig. Ik heb hier echt hulp mee nodig want ik kan bij niemand terecht hiervoor.

Ik wil gegevens uit een database halen en die in een combobox zetten. Elke keer krijg ik alleen maar een vage waarde

Lmodel.Cursus;@1e0be38

Dit staat er in Cursus.java

code:
1
2
3
4
//snip
    private static Cursus[] getCursussen(String query) {
    }
//snip



Hoe zet ik de uitkomst van getAllCursussen() in een combobox?

Volgens een schoolvoorbeeld moet het op zo'n manier:
code:
1
2
3
4
    slbCombo.addItem("");
    for (Docent slber : slbers) {
      slbCombo.addItem(slber.getAchternaam());
    }

Als ik dit aanpas naar mijn code dan krijg ik een nullPointerException.

Wie o wie weet hoe ik dit simpel stuk code kan oplossen?

[ Voor 63% gewijzigd door Woy op 12-10-2009 09:30 ]


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Ga debuggen zou ik zeggen. Eén van die items (slbCombo. slber of slber.getAchternaam()) is blijkbaar null.

Acties:
  • 0 Henk 'm!

  • com2,1ghz
  • Registratie: Oktober 2004
  • Laatst online: 11:34
Ja ik ben daar ook achter gekomen na 8 uurtjes.

Dit was het:
Ik moest eerst een object aanmaken:
code:
1
    Cursus[] cursussen = Cursus.getAllCursussen();


Vervolgens met een for each loop door de resultaten heen lopen:
code:
1
2
3
4
        cursusBox.addItem("");
        for (Cursus cursus : cursussen) {
        cursusBox.addItem(cursus.getCursusweek());
        }


Ik vergat dus een object aan te maken waardoor echt geen waarde kwam

Acties:
  • 0 Henk 'm!

  • momania
  • Registratie: Mei 2000
  • Laatst online: 17-09 07:50

momania

iPhone 30! Bam!

Ik neem aan dat dit een opdracht van school is? Ben wel benieuwd in wat voor stadium dit is. Welke opleiding, hoeveelste jaar, etc?
Er gaat nml. al zo veel mis in dit voorbeeld dat het nooit een goede basis kan zijn voor (java) programmeren.

Neem je whisky mee, is het te weinig... *zucht*


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
com2,1ghz schreef op zondag 11 oktober 2009 @ 18:50:
Ja ik ben daar ook achter gekomen na 8 uurtjes.

Dit was het:
Ik moest eerst een object aanmaken:
code:
1
    Cursus[] cursussen = Cursus.getAllCursussen();


Vervolgens met een for each loop door de resultaten heen lopen:
code:
1
2
3
4
        cursusBox.addItem("");
        for (Cursus cursus : cursussen) {
        cursusBox.addItem(cursus.getCursusweek());
        }


Ik vergat dus een object aan te maken waardoor echt geen waarde kwam
Met een beetje debuggen had je daar natuurlijk ook zelf achter kunnen komen. ( Tips bij het debuggen )

Verder heb ik even de lap code uit je start post gehaald. Het is hier niet de bedoeling dat we jouw spullen gaan debuggen. Dus als je in het vervolg alleen de relevante stukjes code laat zien, zou ik dat erg op prijs stellen.

Bij een NullPointerException is het echter altijd relatief eenvoudig om te achterhalen wat er mis is. De Exception is namenlijk vrij duidelijk. Er is een pointer die null is, en toch probeer jij er wat mee te doen. Zet dus een breakpoint op de regel waar je hem krijgt, en kijk welke variabele er null is. Daarna kun je gaan kijken waarom hij null is ( Meestal omdat je gewoon vergeten bent om hem te zetten, of dat een methode null heeft geretourneerd ). In dit geval heb je de array cursussen blijkbaar niet geïnitialiseerd.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Mr_Light
  • Registratie: Maart 2006
  • Niet online

Mr_Light

Zo-i-Zo de gekste.

Ik denk dat je beter kan gaan bekijken hoe een JComboBox (meeste van het verhaal gaat ook op voor JList) werkt ipv te leren hoe anderen het ge/mis-misbruiken. Zoals wel vaker aangegeven hier is de sun tutorial/trails en javadoc een goede bron van informatie. Omdat nog al veel aspecten van swing hier samenkomen zal ik een korte synopsis geven van wat er allemaal aan de hand is:

JComboBox en JList maken gebruik van ListCellRenderer, Welke pluggable/configureerbaar zijn en als taak hebben een element te renderen. Standaard komen zowel de JComboBox als JList met een simpele ListCellRenderer. Deze is simpelweg een JLabel met text, waar de text de waarde van toString() van het element heeft.

Wat betreft weergave kan je er dus of voor kiezen de toString aan te passen(raad ik niet aan). Of zelf een ListCellRenderer maken en via JComboBox#setRenderer() gebruiken. Er is ook nog het school voorbeeld maar dan raak je de referentie kwijt wat je waarschijnlijk opbreekt als je later ook daadwerkelijk wat met de selectie wilt doen. (En nee later zoeken naar een object met achternaam equals value is niet performant of veilig(twee dezelfde achternamen))

Wat betreft bulk add(replace?) zou ik gewoon een goed model pakken voor de JCombobox/JList die dat ondersteunt of er zelf een maken en die gebruiken - wat ik me zo herinner zorgt JCombobox#addItem() er altijd voor dat er een UI update is per aanroep.

IceManX schreef: sowieso


Acties:
  • 0 Henk 'm!

  • com2,1ghz
  • Registratie: Oktober 2004
  • Laatst online: 11:34
momania schreef op maandag 12 oktober 2009 @ 06:57:
Ik neem aan dat dit een opdracht van school is? Ben wel benieuwd in wat voor stadium dit is. Welke opleiding, hoeveelste jaar, etc?
Er gaat nml. al zo veel mis in dit voorbeeld dat het nooit een goede basis kan zijn voor (java) programmeren.
Ik zit in het 1e blok van HBO Informatica voor mbo(ict) instromers. De reden dat er veel mis gaat is omdat het heel fout ging met mijn projectgroep waardoor 2 man hun werk niet goed deden en ik voor een grote deel eraan moet werken terwijl ik ook java voor het eerst zie.

En op school krijgen wij les. Maar op een rare manier en het mooiste is als ik iets ga vragen zoals dit bijvoorbeeld dan krijg ik als reactie dat google mijn goede vriend is en in het bedrijfsleven ook geen docent bij me heb.

Waarom ik toString() heb overrided(en ander code heb gebruikt wat waarschijnlijk niet de slimste manier is):
Als voorbeeld hebben we een werkende applicatie om te kijken hoe het ongeveer in elkaar zit.
Bijvoorbeeld hoe je gegevens in de database moet invoeren en weer uit moet halen en de manieren hoe het allemaal in werking gaat heb ik ook gebruikt in mijn applicatie. Ook hier is er weinig over verteld daardoor ik soms code maak waarvan ik niet precies weet wat het is en wat het doet.

Ik wil jullie bedanken voor jullie hulp :)

Acties:
  • 0 Henk 'm!

  • momania
  • Registratie: Mei 2000
  • Laatst online: 17-09 07:50

momania

iPhone 30! Bam!

com2,1ghz schreef op dinsdag 13 oktober 2009 @ 09:54:
[...]
En op school krijgen wij les. Maar op een rare manier en het mooiste is als ik iets ga vragen zoals dit bijvoorbeeld dan krijg ik als reactie dat google mijn goede vriend is en in het bedrijfsleven ook geen docent bij me heb.
Waarom wordt dan in godsnaam die opleiding gegeven als je niet eens je leraar om hulp kan vragen. Echt, met onderwijs instellingen en leraren als dit wordt het nooit wat met de IT. Zeker niet om potentiele programmeurs te motiveren voor het vak. :X
Waarom ik toString() heb overrided(en ander code heb gebruikt wat waarschijnlijk niet de slimste manier is):
Als voorbeeld hebben we een werkende applicatie om te kijken hoe het ongeveer in elkaar zit.
Bijvoorbeeld hoe je gegevens in de database moet invoeren en weer uit moet halen en de manieren hoe het allemaal in werking gaat heb ik ook gebruikt in mijn applicatie. Ook hier is er weinig over verteld daardoor ik soms code maak waarvan ik niet precies weet wat het is en wat het doet.
Zeg maar tegen je leraar hij jullie moet leren programmeren, abstract denken, OO design en toepassingen doen, etc, etc... GUI updates, database handling, al dat soort shit is echt niet interessant en zul je nooit goed kunnen uitvoeren (anders dan een paar trucjes leren, maar het nooit echt snappen) als je de basis niet hebt. ;)

Java is een uitstekende, makkelijk te begrijpen, toegankelijke taal waarmee je uitstekend de fijne kneepjes van het vak kan leren. Jammer genoeg wordt het maar al te vaak misbruikt en wordt de basis gewoon overgeslagen.

offtopic:
Ik hoop zo dat hier op GoT eens een aantal IT leraren zich registeren, zodat de gevestigde professionals ze eens een keer uit kunnen kafferen :(

Neem je whisky mee, is het te weinig... *zucht*


Acties:
  • 0 Henk 'm!

  • com2,1ghz
  • Registratie: Oktober 2004
  • Laatst online: 11:34
Maarja we kregen veel dingen ook wel. Maar de laatste weken kwam alles op elkaar en er werd dus weinig informatie over verteld. ( bijvoorbeeld gegevens uit een database halen en invoeren)

Heb hier nog een vraag:
Hoe kan ik een Jcombobox een hidden value geven?

Voorbeeld:
Tabel cursus
idCursus
1Fietsen
2Tennissen


Nu laat ik de gegevens van Cursus zien in de combobox. Maar ik wil ook de id nummer koppelen aan de gekozen Cursus.
Ik dacht eerst aan een String waar ik een waarde aan geef en als ik die oproep dat hij de juiste nummer pakt.

Kunnen jullie me de weg wijzen?

Acties:
  • 0 Henk 'm!

  • momania
  • Registratie: Mei 2000
  • Laatst online: 17-09 07:50

momania

iPhone 30! Bam!

com2,1ghz schreef op woensdag 14 oktober 2009 @ 16:22:
Nu laat ik de gegevens van Cursus zien in de combobox. Maar ik wil ook de id nummer koppelen aan de gekozen Cursus.
Ik dacht eerst aan een String waar ik een waarde aan geef en als ik die oproep dat hij de juiste nummer pakt.

Kunnen jullie me de weg wijzen?
Die tip werd al gegeven. In je combobox stop je volledige objecten, ipv alleen strings. Bij een keuze heb je dus gelijk een reference naar het volledige gekozen object.
De weergave in de box pas je aan via een ListCellRenderer :)

Neem je whisky mee, is het te weinig... *zucht*

Pagina: 1