Avatar billede gulbaek Nybegynder
26. december 2006 - 12:13 Der er 7 kommentarer og
1 løsning

Skift enkelt element i GridLayout

Hejsa, lige et enkelt spørgsmål her i julen.

Er ved at lave et spil, hvor jeg har opbygget selve banen som et GridLayout, hvilket fungere glimrende. Mit problem er bare at jeg ikke er helt tilfreds med min nuværende løsning når jeg skal ændre i min bane.

Når jeg skal ændre en Væg til Jord, så smider jeg hele mit gridlayout væk og opretter et nyt, hvor den er ændret på.

Men er det ikke muligt kun at skifte et enkelt element i et GridLayout?
Avatar billede gulbaek Nybegynder
11. januar 2007 - 19:10 #1
Kommer vist ikke noget svar på dette spørgsmål.
Avatar billede jime_boy Nybegynder
15. januar 2007 - 12:56 #2
Prøv at lave det i en applet. Der har du muligheden for at lave redraw()
Avatar billede gulbaek Nybegynder
15. januar 2007 - 13:24 #3
Jeg laver det skam allerede i en applet.

Jeg savner bare en funktion som kan finde gøre noget i stil med mitGridlayout[2][2] = nytElement;

Her er min kode som den ser ud indtil videre, men det er langtfra en optimal løsning.

public void UpdateBaneDesign()
    {
        JLabel elementLabel = new JLabel();
        removeAll();
        for(int i = 0; i < banedesign.length; i++)
        {
            for(int j = 0; j < banedesign[0].length; j++)
            {
                Icon element = new ImageIcon(baneFelter[i][j].getBillede());
                elementLabel = new JLabel(element);
                add(elementLabel);
            }
        }
       
     
        setLayout(new java.awt.GridLayout(banedesign.length,banedesign[0].length));
        this.validate();
    }
Avatar billede jime_boy Nybegynder
15. januar 2007 - 15:05 #4
Jeg ville, hvis det var mig, benytte "Graphics" til at tegne med. Dette objekt er netop beregnet til grafik som skal opdateres forholdsvist ofte. Umiddelbart kan jeg kun se én ulempe i forhold hvordan du gør det nu, og det er at du mer eller mindre selv skal definere "Gridlayout"'et, men modsat giver det også andre friheder.

I graphics ligger der nemlig 2 metoder, henholdsvis update og redraw som du kan bruge alt efter hvormeget grafik der skal ændres.
Avatar billede gulbaek Nybegynder
15. januar 2007 - 15:32 #5
Kender godt til Graphics, bruger det allerede til at flytte min spiller rundt på banen hvilket fungere glimrende, kan bare ikke forstå at man har layout managere, som ikke kan finde udaf at opdatere et enkelt element, uden man skal smide det hele væk først og bygge det op på ny.

Og jo selvfølgelig er det en mulighed at ændre koden til at benytte Graphics, det er bare så oplagt at benytte et gridlayout til at vise en 2d spilleplade.
Avatar billede jime_boy Nybegynder
15. januar 2007 - 16:18 #6
Jeg er enig, og der også muligt at det kan lade sig gøre med gridlayout (bare ikke noget jeg kender til).

men egentlig er det vel ikke andet end et array som indeholder objekter af billeder og en for-lykke som placere dem. Så har du dit gridlayout. Yderligere vil du kunne, med imageUpdate() opdatere billederne.

Bedre kan jeg sikkert ikke hjælpe!
Avatar billede gulbaek Nybegynder
15. januar 2007 - 17:13 #7
Begynder at tro det ikke er muligt med et gridlayout, men smid lige et svar hvis du vil have lidt point.
Avatar billede jime_boy Nybegynder
16. januar 2007 - 16:33 #8
Jo tak da! :-)
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