Avatar billede anni01ad Nybegynder
18. marts 2004 - 00:44 Der er 3 kommentarer og
1 løsning

ComboBox skal returnere andet end SelectedItem

Hejsa...
Jeg har lavet en JComboBox, der skal vise en række strings med kundenavne, der bliver hevet ud af en database med kunder. For at jeg kan bruge valget til noget, skal jeg i stedet for at få returneret den string(navnet), der bliver valgt i comboboxen bruge det ID, der tilhører kundenavnet i databasen. Dvs at når man i boxen vælger navnet "Jens Hansen", skal jeg have returneret Jens Hansens kundeID. Dette kan selvfølgelig lade sig gøre ved at søge på ID ud fra navnet i databasen igen, men det virker lidt som dobbelt søgearbejde. Kan det på nogen måde lade sig gøre at have både navn og ID i comboboxen, men kun vise navnet til brugeren? På den måde kunne man bruge ID'et fra databasen videre, uden at skulle søge igen...
Avatar billede mikkelbm Nybegynder
18. marts 2004 - 01:05 #1
En ide kunne være at oprette et Kunde-Object ud fra de oplysninger du har i databasen.
I kundeobjektet overrider du toString-metoden ala:

public String toString()
{
    return fornavn + " " + efternavn;
}

så i stedet for at fylde Strings i din combobox fylder du dine kunde-objekter i (Og de vil blive vist som det du returnerer i toString metoden...)

Når du så siger getSelectedItem() på comboboxen caster du til et kunde-objekt:

Kunde k = (Kunde)getSelectedItem();

derefter har du mulighed for at bruge de metoder du har lavet i Kunde.
Det kunne være:
k.getID()
k.getFornavn();
k.getAdresse();
osv............
Avatar billede mikkelbm Nybegynder
18. marts 2004 - 01:09 #2
Kunde k = (Kunde)getSelectedItem();

skal selvølgelig være:

Kunde k = (Kunde)dinComboBox.getSelectedItem();
Avatar billede anni01ad Nybegynder
18. marts 2004 - 01:55 #3
ja, det ser godt nok smart ud... jeg havde også tænkt mig at gøre noget lignende, bare med en intern klasse i stedet, men der kom en masse fejl med "static context bla bla", så jeg tager denne her... tak for hjælpen
Avatar billede mikkelbm Nybegynder
18. marts 2004 - 09:03 #4
Jeg synes heller ikke det er en god idé at lave sådan noget i en indre klasse!
Hvis du laver din Kunde-klasse som en almindelig public class, kan du jo bruge kunde-objektet du henter ud fra comboboxen andre steder i systemet.
Og så arbejde på det i stedet for hele tiden at skulle ha' tilgang til databasen.
Først når du har oprettet/redigeret/slettet dine kunder, opdaterer du databasen med de ny oplysninger. Rent performance-mæssigt er det meget hurtigere. Og efter min mening også pænere. (Java er jo objekt orienteret, så hvorfor ikke benytte sig af det :))
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester