14. december 2004 - 23:44 Der er 1 kommentar og
2 løsninger

"save" og "loade" en GUI application

Hej Allesammen.
Med min beskedne viden indenfor Java, er jeg kommet til det punkt, hvor det ville være rart at kunne save og loade mine applikationer.
Det går nogenlunde med en "almindelig" applikation.
Jeg har lavet et program bestående af en App classe, en GUI/control classe, samt nogle "person" classer. (GUI og contol classen burde vel nok efter bogen, havde været adskilt, men til mit formål fungere det fint sådan her, da  jeg ikke harså godt styr på parametre endnu)

Min GUI classe består af en JDesktopPane og en JButtonPanel, hvor jeg, ved at trykke på en knap kan hente en JInternalFrame fra én af Person classerne. Når så jeg har fyldt min JDesktopPane op med Frames fyldt med information, vil jeg gerne gemme disse, Ikke kun informationerne men også de individuelle Frames fysiske placering på Desktoppen.
Jeg har indtil videre eksperimenteret med følgende uden held...
Her er et uddrag af min GUI classe:

        JButton save = new JButton("Save");
        save.setBackground(Color.getHSBColor(12,23,345));
        save.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
              try
              {
                FileOutputStream file = new                                                                  FileOutputStream("Savings.ser");
                ObjectOutputStream outStream = new ObjectOutputStream(file);
               
                outStream.writeObject((Character)characterFrame);
                outStream.writeObject((Enemy)enemyFrame);
                outStream.close();
              } 
              catch(Exception e)
              {}
            }
        });
        JButton load = new JButton("Load");
        load.setBackground(Color.getHSBColor(12,23,345));
        load.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
              try
              {
                FileInputStream file = new FileInputStream("Savings.ser");
                ObjectInputStream inStream = new ObjectInputStream(file);
                characterFrame = (Character)inStream.readObject();
                enemyFrame = (Enemy)inStream.readObject();
                inStream.close(); 
              } 
              catch(Exception e)
              {}
            }
        });

jeg gemmer et eller andet i Savings.ser filen, der fylder ca 27kb.
men der sker ingenting når jeg trykker på load-knappen...
....håber spørgsmålet er til at læse...tak
Avatar billede arne_v Ekspert
14. december 2004 - 23:47 #1
Prøv og sæt en

file.close();

ind nederst i de to skriv og læse blokke
14. december 2004 - 23:56 #2
Det er hermed gjort...ingen ændringer desværre.

Jeg har lidt mistro til min load blok.
Der ser for mig ud som om at jeg ligger den indlæste fil i mine to objektreferencer.
Skal disse ikke instantieres, eller sådan noget ??
16. december 2004 - 22:31 #3
Nå ja, bliver man ved længe nok lykkes det til sidst....
Det der manglede var:

enemyFrame.setVisable(true);
CharacterFrame.setVisable(true);
desktop.add(enemyFrame);
desktop.add(CharacterFrame);
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