Simone89RN
23-07-2009, 11:05
Ciao a tutti. Vi illustro il mio problema:
package ascoltatori;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.swing.filechooser.*;
import campoMinato.MyFrame;
public class MyLoadGameListener implements ActionListener {
JFileChooser chooser;
FileNameExtensionFilter filter;
MyFrame mainFrame, newFrame;
public MyLoadGameListener(MyFrame parent) {
mainFrame = parent;
chooser = new JFileChooser();
filter = new FileNameExtensionFilter("CMP Files", "cmp");
chooser.setFileFilter(filter);
}
public void actionPerformed(ActionEvent e) {
JMenuItem loadGame = (JMenuItem) e.getSource();
int returnVal = chooser.showOpenDialog(loadGame);
if (returnVal == JFileChooser.APPROVE_OPTION) {
FileInputStream f = null;
ObjectInputStream is = null;
try {
f = new FileInputStream(chooser.getSelectedFile().getPath());
is = new ObjectInputStream(f);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
}
try {
newFrame = (MyFrame) is.readObject();
newFrame.setVisible(true);
mainFrame.setVisible(false);
is.close();
} catch (IOException e1) {
e1.printStackTrace();
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
}
}
}
I Frame in questione sono newFrame e mainFrame che rappresentano rispettivamente il frame caricato da file e quello gia in esecuzione. Entrambi hanno la stessa struttura, una JMenuBar formata da 3 JMenuItem e un JPanel contenente una matrice di bottoni. All'evento click del pulsante sinistro del mouse ognuno di questi componenti genera una classe ascoltatrice che per quanto riguarda i JMenuItem funziona da:
1) Creare un nuovo oggetto MyFrame al posto di quello corrente.
2) Salvare il MyFrame corrente su file.
3) Caricare un MyFrame da file.
Il codice postato rappresenta la classe ascoltatrice predisposta per il caricamento da file di un MyFrame precedentemente salvato. Il Frame viene caricato correttamente in memoria, ma non ascolta più gli eventi legati ai bottoni della matrice e a 2 delle JMenuItem, quella di salvataggio e quella di caricamento, come mai? Chi mi sa aiutare?
package ascoltatori;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.swing.filechooser.*;
import campoMinato.MyFrame;
public class MyLoadGameListener implements ActionListener {
JFileChooser chooser;
FileNameExtensionFilter filter;
MyFrame mainFrame, newFrame;
public MyLoadGameListener(MyFrame parent) {
mainFrame = parent;
chooser = new JFileChooser();
filter = new FileNameExtensionFilter("CMP Files", "cmp");
chooser.setFileFilter(filter);
}
public void actionPerformed(ActionEvent e) {
JMenuItem loadGame = (JMenuItem) e.getSource();
int returnVal = chooser.showOpenDialog(loadGame);
if (returnVal == JFileChooser.APPROVE_OPTION) {
FileInputStream f = null;
ObjectInputStream is = null;
try {
f = new FileInputStream(chooser.getSelectedFile().getPath());
is = new ObjectInputStream(f);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
}
try {
newFrame = (MyFrame) is.readObject();
newFrame.setVisible(true);
mainFrame.setVisible(false);
is.close();
} catch (IOException e1) {
e1.printStackTrace();
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
}
}
}
I Frame in questione sono newFrame e mainFrame che rappresentano rispettivamente il frame caricato da file e quello gia in esecuzione. Entrambi hanno la stessa struttura, una JMenuBar formata da 3 JMenuItem e un JPanel contenente una matrice di bottoni. All'evento click del pulsante sinistro del mouse ognuno di questi componenti genera una classe ascoltatrice che per quanto riguarda i JMenuItem funziona da:
1) Creare un nuovo oggetto MyFrame al posto di quello corrente.
2) Salvare il MyFrame corrente su file.
3) Caricare un MyFrame da file.
Il codice postato rappresenta la classe ascoltatrice predisposta per il caricamento da file di un MyFrame precedentemente salvato. Il Frame viene caricato correttamente in memoria, ma non ascolta più gli eventi legati ai bottoni della matrice e a 2 delle JMenuItem, quella di salvataggio e quella di caricamento, come mai? Chi mi sa aiutare?