Gå til innhold

Oppdatere ein array med JComboBox og ActionL.


Anbefalte innlegg

Hei.

 

Eg har ein klasse som har ein ActionListener som går på ein timer. Dette grunna ein nedtellingsklokke. So har eg ein JComboBox som brukar ein anna actionListener-klasse, og skal ved nytt valg endre ein array som er i hovudklassen. Korleis gjer eg dette?

 

import java.lang.*;

public class Test implements ActionListener {
 /* kode for GUI etc */

 private JComboBox valgListe;
 private int [] tider;

 public Test() {
   valgListe = new JComboBox("Nedtellingsliste 1", "Nedtellingsliste 2", "Nedtellingsliste 3");
   tider = {0930, 1000, 1030, 1100, 1130, 1200};
   valgListe.addActionListener(new listeVelger(tider));
 }

 public void actionPerformed(ActionEvent e) {
   // Oppdaterer ein JLabel med ein verdi frå tider.
 }
}

class listeVelger implements ActionListener {
 int [] mineTider;
 int [] tider_1 = { 1040, 1140, 1240, 1340, 1440, 1540 };
 int [] tider_2 = { 1700, 1800, 1900, 2030, 2130, 2230 };
 int [] tider_3 = { 0930, 1000, 1030, 1100, 1130, 1200 };

 public listeVelger( int [] tempTider ) {
   // Er dette riktig? Blir mineTider peikande på same plass i minnet?
   mineTider = tempTider;
 }

 public void actionPerformed(ActionEvent e) {
   JComboBox cb = (JComboBox)e.getSource();
   String liste = (String)cb.getSelectedItem();
   int indeks = cb.getSelectedIndex();
   int antall;

   /* Kva skal eg gjere her?
    * Det under fungerer ikkje (arrayCopy).
    */
   switch( indeks ) {

     case 0:
       antall= tider_1.length;
       System.arraycopy(tider_1, 0, mineTider, 0, antall );
       break;
     /*
      * etc...
      */
   }
 }
}

Trur eg har tatt med det nødvendige for å forstå problemet. Spør om ikkje.

 

På førehand, takk for svar!

 

EDIT 300707@0925: Ja, det var noko eg gløymte å skrive.

 

Programmet skal bruke ein variabel, int [] tider, som innheldt tider til å telle ned til dei gitte klokkesletta i tider. Så når den er kome til eit klokkeslett, skal den vise kor lenge det er til neste. Som bussruter til dømes. Poenget med JComboBoxen er at eg har andre tider som skal brukast (andre "bussruter"), og då vil eg ved hjelp av JComboBoxen kunne velge ei av dei. Når eg då trykker på eit av elementa i JComboBoxen, skal eg oppdatere variabelen tider, med ein av dei andre (tider_1, tider_2, tider_3) i henhold til kva element ein velger frå JComboBoxen.

Endret av rec0n
Lenke til kommentar
Videoannonse
Annonse

Ja, det var noko eg gløymte å skrive.

 

Programmet skal bruke ein variabel, int [] tider, som innheldt tider til å telle ned til dei gitte klokkesletta i tider. Så når den er kome til eit klokkeslett, skal den vise kor lenge det er til neste. Som bussruter til dømes. Poenget med JComboBoxen er at eg har andre tider som skal brukast (andre "bussruter"), og då vil eg ved hjelp av JComboBoxen kunne velge ei av dei. Når eg då trykker på eit av elementa i JComboBoxen, skal eg oppdatere variabelen tider, med ein av dei andre (tider_1, tider_2, tider_3) i henhold til kva element ein velger frå JComboBoxen.

Lenke til kommentar

Kanskje det kan løyse problemet om eg set tider som eigen klasse ja. Det skal eg prøve. Men eg kan ikkje setje mineTider = cb.getSelectedItem(), då eg berre får indeksnummeret i JComboBoxen av det, og mineTider skal jo inneholde dei riktige tidene. Problemet her er meir korleis eg skal ha referanseoverføring eller korleis adressene fungerer i Java. Eg skal jo oppdatere "tider"-variabelen, og prøver å få mineTider til å peke på same minneadresse.

Lenke til kommentar

Ved å lage en klasse Tider som implemeterer Collections<Integer> eller noe sånt? Sant å si så vet jeg fremdeles ikke helt hva programmet ditt skal gjøre eller hva det gjør, men jeg ville helt sikkert laget en klasse for tider.

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å
×
×
  • Opprett ny...