Gå til innhold

Ulik action på hver enhet i JComboBox


Anbefalte innlegg

Har nettopp installert NetBeans 6.8 og driver og leker meg litt.

 

Har et lite ekspriment der jeg ønsker å lage en dropdown-meny (JcomboBox)med noen alternativer som man enten kunne velge direkte fra boksen - eller markere i boksen for deretter å ativere med en egen OK knapp.

 

Formålet med dette er at et tekstområde skal endres avhengig av hvilke valg man klikker på.

 

Teksten som skal inn i tekstområdet skal primæret legges inn av bruker (meg) - og med f.eks jTextArea1.setText(""); kommandoen.

 

Dette fikk jeg ganske enkelt til når jeg brukte knapper - Men jeg forestiller meg at JCombobox gjør brukergrensesnittet mye penere.

 

Noen som har noen meninger om hvordan dette kan gjøres i NetBeans 6.8 eller ved hjelp av koding.

 

(Jeg har ikke kodet på mange år så er rimelig rusten....)

Lenke til kommentar
Videoannonse
Annonse

Her er litt kode som kan hjelpe deg i gang. :)

 

final JComboBox c = new JComboBox(new String[] {
"Valg 1",
"Valg 2",
"Valg 3"
});

c.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
	String value = (String) c.getSelectedItem();
	if (value.equals("Valg 1"))
		; // Kode for "Valg 1"

	else if (value.equals("Valg 2"))
		; // Kode for "Valg 2"

	else if (value.equals("Valg 3"))
		; // Kode for "Valg 3"
}
});

 

Merk at det som vises i JComboBox er toString()-metoden til elementene, så du kan gjerne bruke egne klasser.

Eksempel:


class Valg {
  String navn, data;
  Valg(String n, String d) {
      navn = n;
      data = d;
  }
  public String toString(){
      // Dette er teksten som vises i JComboBoxen.
      return navn;
  }
  public String getData() {
      return data;
  }
}

...


Vector<Valg> valg = new Vector<Valg>();
valg.add(new Valg("Valg 1", "Hei"));
valg.add(new Valg("Valg 2", "Hallo"));
valg.add(new Valg("Valg 3", "..."));

valgliste = new JComboBox(valg);

...

public void actionPerformed(ActionEvent e) {
   Valg v = (Valg) valgliste.getSelectedItem();
   textbox.setText(v.getData());
}

 

Når du så velger "Valg 2" fra menyen, blir teksten i textbox satt til "Hallo". :)

 

Bare si ifra om det ble litt uklart, så skal jeg prøve å forklare det litt bedre. ;)

Endret av RavnTM
Lenke til kommentar

Tar man andre løsningen til RavnTM litt videre, og praktiserer litt IOC med "Valg" elementene, kan hvert valg inneholde en referanse til det som skal utføres, slik at handleren bare kaller opp det som skal gjøres, og ikke implementerer det selv. Ex, "data" er ikke en string, men et object som implementerer et interface med en "onSelected".

 

Det blir nok desverre en god del knasting av interface deklarasjon og implementasjoner siden Java enda ikke har implementert noe form for funksjonspekere.

Lenke til kommentar

Supre alternativer folkens .. jeg takker for alle :-)

 

Etter litt testing så gikk jeg etterhvort helt bort fra jComboBox og la heller inn egne menyer som JMenu ... det funket supert :-)

 

Skulle gjerne hatt noen tips angående bruk av tabeller (jTables) - Jeg får ikke til at tabellen med innlagte data kommer opp i jTExtArea når jeg velger et alternativ fra min meny.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...