[Java]Items uit ArrayList

Pagina: 1
Acties:
  • 614 views

Onderwerpen


Acties:
  • 0 Henk 'm!

  • MonkeySleeve
  • Registratie: Februari 2009
  • Laatst online: 12:31

MonkeySleeve

It's just Monkey business

Topicstarter
Hallo allemaal,

Ik ben momenteel bezig aan een schoolproject maar loop een beetje vast. Ik heb een GUI gemaakt met daarin een JList. Hierin moeten items komen te staan die ik uit een MySQL Database haal.

Ik heb nu een Main die de GUI opent en vanuit de GUI wordt een nieuwe instance gemaakt van Database_Manager. In de Database_Manager zit een methode die een connectie met mijn mysql database maakt en een query uitvoert om een bestelling eruit haalt.
ResultSet result = stmt.executeQuery("SELECT * FROM bestelling WHERE Status = 'Geweigerd'");

while(result.next()){

Bestelling bestel = new Bestelling(result.getInt("Klant_Nummer"), result.getString("Gerecht"), result.getInt("Tafelnummer"), result.getString("Status"));

bestelArray.add(bestel);
}
Zodra hij dus die gegevens uit de database haalt, stuurt hij die door in een nieuwe instance van Bestelling en vervolgens voegt hij ze toe aan een ArrayList. Aan het einde van de code Return'ed hij deze ArrayList.

In de GUI roept hij die methode aan:
bestelArray = new ArrayList<Bestelling>();
bestelArray = Main.getDB().checkStateAcc();
En hier komt mijn probleem; Hoe zorg ik ervoor dat de items in die ArrayList, worden weergeven in mijn JList met bv de text van Gerecht uit de database?

Deze manier werkt en laat 2 items zien in de JList, maar met de naam Control.Bestelling@18fe7c3, Control is de Package waar de class Bestelling in staat:
DefaultListModel listModel = new DefaultListModel();

for (int i = 0; i < bestelArray.size(); i++){
listModel.addElement(bestelArray.get(i));
}
lijstBestellingen = new JList(listModel);
In Bestelling zitten een aantal get-methodes die dus de gegevens returnen, hoe kan ik deze aanroepen om vervolgens aan die JList toe te voegen?

Did you bring the banana's? Steam-id: MonkeySleeve


Acties:
  • 0 Henk 'm!

  • gvdh
  • Registratie: December 2009
  • Nu online
Je moet de toString-methode van de klasse Bestelling overriden.

Acties:
  • 0 Henk 'm!

  • MonkeySleeve
  • Registratie: Februari 2009
  • Laatst online: 12:31

MonkeySleeve

It's just Monkey business

Topicstarter
gvdh schreef op donderdag 20 mei 2010 @ 12:23:
Je moet de toString-methode van de klasse Bestelling overriden.
Ehm en wat gebeurt er dan? Wat doet het etc :)

Did you bring the banana's? Steam-id: MonkeySleeve


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

In je klasse 'Bestelling'
Java:
1
2
3
4
5
@override
public string toString()
{
    return string.format("%s %s", this.id, this.besteller);
}

ofzo :P

Wat doet het? Iedere keer als jouw object naar een string wordt geconverteerd krijg je dan dit ipv die gekke code die jij krijgt :)

[ Voor 30% gewijzigd door Snake op 20-05-2010 14:16 ]

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • Herko_ter_Horst
  • Registratie: November 2002
  • Niet online
Dat kun je nalezen in de API documentatie.

"Any sufficiently advanced technology is indistinguishable from magic."


Acties:
  • 0 Henk 'm!

Verwijderd

ThE_OwNeR schreef op donderdag 20 mei 2010 @ 14:14:
[...]
Ehm en wat gebeurt er dan? Wat doet het etc :)
Beetje zelf onderzoek kan geen kwaad: *snip*

Beetje netiquette kan ook geen kwaad. Een lmgtfy verstopt in een tinyurl? Kom op zeg.

[ Voor 29% gewijzigd door Creepy op 20-05-2010 16:05 ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 12:16

Creepy

Tactical Espionage Splatterer

Maar wat Arcanedevil probeert te vertellen en wat Herko ook al aangeeft: even zelf kijken naar de documentatie kan geen kwaad ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • MonkeySleeve
  • Registratie: Februari 2009
  • Laatst online: 12:31

MonkeySleeve

It's just Monkey business

Topicstarter
Wow bedankt Snake :D Dat werkt echt top! Weer wat geleerd :) Nog klein vraagje: Iemand ervaring met die JList zelf?

Did you bring the banana's? Steam-id: MonkeySleeve


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 12:16

Creepy

Tactical Espionage Splatterer

Wat wil je weten over die JList? Heb je er een probleem mee? Zo ja, wat dan? En wat heb je zelf al geprobeerd. etc. etc

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • MonkeySleeve
  • Registratie: Februari 2009
  • Laatst online: 12:31

MonkeySleeve

It's just Monkey business

Topicstarter
Ik probeer een EventListener erop te zetten wanneer je op 1 van de items klikt. Nu heb ik addListSelectionListener geprobeerd, alleen voerde hij hier de actie 2x uit :S
lijstBestellingen.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
listSelect(e);
}

private void listSelect(ListSelectionEvent e) {
System.out.println("Klik");
}
});
Ik kreeg telkens 2 Klik's in mijn output scherm... Ik wil dus eigenlijk wanneer je op het item klikt, dat hij dan een methode aanroept waar hij alle gegevens laat zien van dat item.

Did you bring the banana's? Steam-id: MonkeySleeve


Acties:
  • 0 Henk 'm!

  • Standeman
  • Registratie: November 2000
  • Laatst online: 12:06

Standeman

Prutser 1e klasse

Dat komt omdat er (volgens mij, swing is al een tijdje geleden) er ook twee events afgaan wanneer je een andere waarde in je List aanklikt. Een de-select van je huidige waarde en een select van je nieuwe waarde.

Kijk dus naar het ListSelectionEvent. Daar zitten wat methodes in waarmee je het 1 en ander kan regelen.

een beetje off-topic:
Java:
1
ResultSet result = stmt.executeQuery("SELECT * FROM bestelling WHERE Status = 'Geweigerd'");

Gebruik prepared statements wanneer je met variabelen wil gaan werken. Anders wordt je app gevoelig voor SQL injection.

The ships hung in the sky in much the same way that bricks don’t.


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Meeste is wel gezegd maar nog ff over dit stukje:
Java:
1
2
bestelArray = new ArrayList<Bestelling>();
bestelArray = Main.getDB().checkStateAcc();


Je maakt hier op de eerste regel een nieuwe lege arraylist aan, en op de 2e regel gooi je die weg en vervang je hem door de arraylist die gemaakt is in de checkStateAcc() method. Oftewel: die eerste regel kun je weglaten.

Probeer je een beetje te verdiepen in wat je precies aan het doen bent, vooral wat betreft het daadwerkelijk aanmaken van objecten. Als je bovenstaande stukje code 1000 keer per seconde aanroept krijgt je garbage collector het erg druk.

Tenslotte: voor classnames gebruik je geen underscores. Ik hoop dat ze je correcte java standaarden aanleren op school maar Database_Manager zou DatabaseManager moeten zijn.

https://niels.nu


Acties:
  • 0 Henk 'm!

  • MonkeySleeve
  • Registratie: Februari 2009
  • Laatst online: 12:31

MonkeySleeve

It's just Monkey business

Topicstarter
Heb het aangepast Hyrda ;) Dat event werkt nu. Hoe zorg ik ervoor dat wat in bestelArray zit, in een methode kan doen die een String verwacht zoals .setText()?

Did you bring the banana's? Steam-id: MonkeySleeve


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 12:16

Creepy

Tactical Espionage Splatterer

Ok, het is wel goed nu. Heb nu twee keer aan je gevraagd om iets meer info te geven, docs te lezen en zelf wat te proberen maar nu vertik je het weer.

Probeer nu eerst eens zelf wat uit te zoeken. Het draait hiet om het zelf programmeren, niet om anderen de oplossing kant en klaar vor je aan te dragen waar het bij jou nu wel op neer komt.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.