Toon posts:

[Java]Buttons werken niet meer na een bep actie

Pagina: 1
Acties:

Verwijderd

Topicstarter
Nogmaals mijn xq's voor mijn laatste post. Die was idd ondoordacht.

Maar :) bij deze kom ik er echt niet uit, ook niet op google of bij sun.

Ik heb een progie geschreven die een stand kan bijhouden van een bep pool biljart spelletje.

Hij progie open een JFrame, in dit JFrame wordt een panel in een Contentpane gezet. Dit is zeg maar het hoofd panel die weer andere panels bevat zoals control panel ( met knoppen ed).

Het progie werkt prima. Ik kan zelfs wat naar een file schrijven.(code volgt)
Maar als ik deze file dan wil openen, laad hij netjes alle info (zoals uitslagen ed), maar de knopen van bijv control panel werken niet meer.
Ik kan dus in het geopende bestand niet meer verder werken.

Zo schrijf is een file weg. main is het hoofd panel. Deze bevat referentie naar meerde objecten(zoals dus control panel)
Java:
1
2
3
4
5
6
7
8
9
10
11
    public void saveModel(){
        try{
            FileOutputStream fos = new FileOutputStream("model.sss");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(main);
            oos.close();
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }


Als ik dit bestand dus ga inlezen.

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    public void openModel(){
        try{
            FileInputStream fis = new FileInputStream("model.sss");
            ObjectInputStream ois = new ObjectInputStream(fis);
            main = (MainView)ois.readObject();
            ois.close();
            panel.removeAll();
            panel.add(main);
            panel.validate();
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }


Alles wat ik opgeslagen had is weer zichtbaar maar de knopen functioneren niet meer in de panles....


ik hoop dat ik het een beetje duidelijk heb gebracht...

Alles classes vanaf main implementeren Serializable.
De acties van de knoppen zijn wel allemaal inner classes. Dus:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
        settings.add(setRace = new JButton("Confirm"));
        setRace.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                if(raceTo.isEditable()){
                    if(!raceTo.getText().equals("")){
                        raceTo.setEditable(false);
                        model.setRaceTo(Integer.parseInt(raceTo.getText().trim()));
                    }
                }else{
                    raceTo.setEditable(true);
                }
            }
        });

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Je bedoelt dat de Actions die je aan de knoppen had gehangen niet meer werken?

  • WildernessChild
  • Registratie: Februari 2002
  • Niet online

WildernessChild

Voor al uw hersenspinsels

Een ActionListener is niet Serializable. Denk dat daar het probleem zit. Als je deze nu subclasst en de subclass wel Serializable laat implementeren?

Sowieso vind ik het smerig om je hele interface weg te schrijven naar een bestand als het alleen om het opslaan van een paar scores gaat... maar dat terzijde.

Maker van Taekwindow; verplaats en resize je vensters met de Alt-toets!


Verwijderd

Topicstarter
Het is idd niet volgens het MVC, daar ben ik me van bewust. Maar de labels van knoppen zijn afhankelijk van de invoer van de knoppen. Ik heb het ondoordacht geschreven en ik had geen zin meer om alles te herschrijven.

Maar iid ik heb een eigen class gemaakt die de ActionLitener implementeerd, en de knoppen werken weer.

Alleen krijg ik het niet voor mekaar met de JSpinners die ik gebruik.
Ik heb een aparte JSpinner class en een aparte numbermodel class gemaakt, maar het zit hem ook in de knoppen v/d JSpinner. Ik weet niet hoe ik deze acties meot herschrijven in een eigen class.

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

je kunt toch ook met JButton.setCaption() de tekst veranderen?

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 27-05 21:44

Robtimus

me Robtimus no like you

wasigh schreef op 31 januari 2004 @ 16:25:
je kunt toch ook met JButton.setCaption() de tekst veranderen?
JButton.setText(String) bedoel je? :P

More than meets the eye
There is no I in TEAM... but there is ME
system specs

Pagina: 1