Avatar billede tendal Nybegynder
18. februar 2004 - 17:32 Der er 19 kommentarer og
1 løsning

Opdatering af en AWT liste

Hej

Jeg har problemer med at få opdateret en AWT liste
Har et vindue med en liste med nogle persondata og nogle knapper - en af disse knapper åbner et nyt vindue hvor man kan redigere disse persondata. Når man har gjort dette trykke man ok og kommer tilbage til vinduet med persondata - som nu helst skulle være opdateret med de nye data, men det er de ikke.

Her er lidt kode fra vinduet hvor man redigerer
pd.hv.gh.redigerSpiller(tmpS, t);
pd.hv.gh.save();           
System.out.println("1");           
pd.repaint(); //den her burde vel lave dette vindue igen???
pd.setVisible(true);
setVisible(false);
Avatar billede _carsten Nybegynder
18. februar 2004 - 18:57 #1
Vi skal nok se lidt mere kode, ovenstående viser kun at du en redigerSpiller() og en save() metode, samt du bruger repaint().
Avatar billede tendal Nybegynder
18. februar 2004 - 23:33 #2
ActionListener Ok = new ActionListener(){
        public void actionPerformed(ActionEvent e){
            Spiller tmpS = new Spiller();
            String tmp1  = navnefelt.getText();
            tmpS.setName(tmp1);
            if (dame.isSelected()){
                tmpS.setSex("FE");
            }else {
                tmpS.setSex("MA");
            }
            String tmp2 = styrkeSin.getText();
            int toInt2 = Integer.parseInt(tmp2);
            tmpS.setRowPointsS(toInt2);
            String tmp3 = styrkeDou.getText();
            int toInt3 = Integer.parseInt(tmp3);
            tmpS.setRowPointsD(toInt3);
            String tmp4 = styrkeMix.getText();
            int toInt4 = Integer.parseInt(tmp4);
            tmpS.setRowPointsM(toInt4);
            String tmp5 = fradragSin.getText();
            int toInt5 = Integer.parseInt(tmp5);
            tmpS.setRaekkeFradragS(toInt5);
            String tmp6 = fradragDou.getText();
            int toInt6 = Integer.parseInt(tmp6);
            tmpS.setRaekkeFradragD(toInt6);
            String tmp7 = fradragMix.getText();
            int toInt7 = Integer.parseInt(tmp7);
            tmpS.setRaekkeFradragM(toInt7);
            pd.hv.gh.redigerSpiller(tmpS, t);
            pd.hv.gh.save();           
            System.out.println("1");           
            pd.repaint(1);
            pd.setVisible(true);
            setVisible(false);
           
      }
  };
Avatar billede tendal Nybegynder
18. februar 2004 - 23:36 #3
pd er persondata vinduet der helst skulle opdateres efter redigerSpiller er kaldt - redigerSpiller er en metode der udskifet et element fra en arrayliste med et nyt - i dette tilfælde putter jeg bare det samme element der ned i igen blot med ændringer
Avatar billede tendal Nybegynder
19. februar 2004 - 09:57 #4
Jeg synes ikke det ser ud som om der er mange der ønsker at give nogle svar på dette spørgsmål - det er vel ikke for svært til pointene - hvis ja giver jeg gerne flere point - hvis man kan? Hvis man synes der mangler mere forklaring, så skriv bare så skal jeg gøre hvad jeg kan for at besvare
Avatar billede _carsten Nybegynder
19. februar 2004 - 10:06 #5
Det kniber nok mere med tiden til at kigge på spørgsmålet.

Hvordan ser metoden redigerSpiller(tmpS, t) ud ??
Avatar billede tendal Nybegynder
19. februar 2004 - 10:18 #6
public void redigerSpiller(Spiller sp, int index)
    {
        spillerArray.set(index, sp);
    }
Avatar billede tendal Nybegynder
19. februar 2004 - 10:22 #7
Det "mærkelige" er at hvis jeg efter at have lavet ændringer lukker persondata vinduet og efterfølgende åbner det igen - ja så er ændringerne foretaget - dvs. ændringerne i Arrayet sker, men gui'en bliver ikke opdateret
Avatar billede _carsten Nybegynder
19. februar 2004 - 10:34 #8
Enten skal metoden redigerSpiller() eller save() sætte værdierne på ny i pd vinduet

Du må have en metode som sætter de respektive værdi i vinduet udfra indholdet i din ArrayList

Altså noget a la:

    public void redigerSpiller(Spiller sp, int index)
    {
        spillerArray.set(index, sp);
        //setVærdi i felter
    }
Avatar billede tendal Nybegynder
19. februar 2004 - 10:46 #9
Mine værdier i listen bliver tilføjet i public void jbInit() i persondata vinduet - det vil sige at de bliver læst ind når vinduet åbnes - jeg kunne selvfølglig gøre det at jeg
public void redigerSpiller(Spiller sp, int index)
    {
        spillerArray.set(index, sp);
        //clear liste
        //setVærdi i felter
    }
Så bliver de selvfølgelig læst ind igen - men det var der smartere hvis blot man kunne repainte listen så de nye data blev skrevet i
Avatar billede _carsten Nybegynder
19. februar 2004 - 10:52 #10
Hvad er Spiller tmpS egentlig (array, arrayList, vector) oder was ??

Hvad er felterne (TextFields, labels) ??
Avatar billede _carsten Nybegynder
19. februar 2004 - 10:53 #11
Kan vi ikke se noget/hele koden fra jbInit()
Avatar billede tendal Nybegynder
19. februar 2004 - 11:07 #12
Det kan I da godt hvis I mener det hjælper - Spiller tmpS er et Objekt af typen Spiller og så ved jeg ikke helt hvad du mener med felterne. Men i persondata vinduet er der en AWT liste som indeholder spillere af typen Spiller - i listen står deres atributter udskrevet det er sådan set alt. I persondata vinduet kan man oprette nye spillere, slette spillere og redigere spillere - det er klart at når man ændre i atributterne for en spiller ja så skal den også udskrive de nye atributter i listen. Her er det første af den kode du bad om - hvis det hjælper?
public void jbInit() throws Exception {
    this.getContentPane().setLayout(null);
    list1.setBounds(new Rectangle(14, 25, 360, 298));
    list1.setMultipleMode(false);
    Iterator it = hv.gh.getSpillerArray().iterator();
        while (it.hasNext()){
            Spiller tmpS = (Spiller) it.next();
            list1.add(tmpS.toString());
           
        }
    rediger.setBounds(new Rectangle(14, 340, 130, 27));
    rediger.setFont(new java.awt.Font("Dialog", 1, 12));
    rediger.setActionCommand("Rediger");
Avatar billede _carsten Nybegynder
19. februar 2004 - 11:15 #13
Prøv lige om den her løser det

    public void redigerSpiller(Spiller sp, int index)
    {
        spillerArray.set(index, sp);
        list1.validate();
        list1.repaint();
    }
Avatar billede tendal Nybegynder
19. februar 2004 - 11:24 #14
Desværre nej
Avatar billede tendal Nybegynder
19. februar 2004 - 16:54 #15
test
Avatar billede tendal Nybegynder
08. september 2004 - 16:15 #16
Mange har forsøgt at hjælpe - men det er ikke helt lykkes - jeg giver dog gerne point for hjælpen, så hvis nogen vil smide nogle svar så...
Avatar billede _carsten Nybegynder
08. september 2004 - 18:09 #17
Der er vist noget jeg har misset her !

Lige et par spørgsmål
1. Har du husket at adde den ActionListener ?

2. Kan du poste HELE koden her, så skal jeg kigge på det i løbet af aftenen ?
Avatar billede tendal Nybegynder
08. september 2004 - 18:16 #18
Nej det behøver du ikke - jeg har løst det på en anden måde, men det er jo ved at være længe siden, så jeg husker faktisk ikke hvordan, men jeg ville jo ikke bare selv tage pointene - dem fortjener du
Avatar billede _carsten Nybegynder
08. september 2004 - 18:22 #19
Nej - snup dem selv
Avatar billede tendal Nybegynder
08. september 2004 - 23:14 #20
Så håber jeg ikke jeg får skæld ud
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