Co moze oznaczać ten wyjątek ? Na poczatku to wszystko co jest ponizej moze wydawac sie chaotyczne ale na ta chwile nie potrafilem inaczej przedstawic problemu :)
java.io.NotSerializableException: javax.swing.JTable$CellEditorRemover
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteObject(Unknown Source)
at javax.swing.JTable.writeObject(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at javax.swing.event.EventListenerList.writeObject(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at java.util.HashMap.internalWriteEntries(Unknown Source)
at java.util.HashMap.writeObject(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at program.PanelStatystyki$4.actionPerformed(PanelStatystyki.java:308)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.plaf.basic.BasicTableUI.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at javax.swing.ScrollPaneLayout.layoutContainer(Unknown Source)
at java.awt.Container.layout(Unknown Source)
at java.awt.Container.doLayout(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validate(Unknown Source)
at javax.swing.RepaintManager$3.run(Unknown Source)
at javax.swing.RepaintManager$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at javax.swing.RepaintManager.validateInvalidComponents(Unknown Source)
at javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
(PanelStatystyki.java:308) to jest :
zapiszUzytkownicy.writeObject(ramka.getUzytkownicyMapa());
W tym wszystkim chodzi o to że próbuje zapisać DefaultTableModel do pliku. Ponizej pełny kod tej operacji.
przyciskDodaj.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
double waga = Double.parseDouble(poleWaga.getText());
double wzrost = Double.parseDouble(poleWzrost.getText());
wzrost = wzrost/100;
double bmi = waga/(Math.pow(wzrost,2));
java.text.DecimalFormat df=new java.text.DecimalFormat();
df.setMaximumFractionDigits(2);
df.setMinimumFractionDigits(2);
ramka.getUzytkownicyMapa().get(zalogowany).getTabelaInformacje().addRow(new Object[]{poleData.getText(),poleWiek.getText(),poleWaga.getText(),poleWzrost.getText(),df.format(bmi)});
DefaultTableModel a = ramka.getUzytkownicyMapa().get(zalogowany).getTabelaInformacje();
ramka.getUzytkownicyMapa().get(zalogowany).setabelaInformacje(a);
poleWiek.setText("");
poleWaga.setText("");
poleWzrost.setText("");
try {
FileOutputStream PolaczZapiszUzytkownicy = new FileOutputStream("uzytkowinicyStan.ser");
ObjectOutputStream zapiszUzytkownicy = new ObjectOutputStream(PolaczZapiszUzytkownicy);
zapiszUzytkownicy.writeObject(ramka.getUzytkownicyMapa());
zapiszUzytkownicy.close();
} catch (Exception ex) {
// TODO Auto-generated catch block
ex.printStackTrace();
}
}
});
Poniżej wrzuce jeszcze w jaki sposób tworzę nowego użytkownika.
nKolumn = new String[]{"data","wiek","waga","wzrost","BMI"};
nKomorek = new Object [0][0];
modelTabeli = new DefaultTableModel(nKomorek,nKolumn);
uzytkownik = new Uzytkownik(poleImie.getText(),poleNazwisko.getText(),ple,poleEmail.getText(),poleLogin.getText(),poleHaslo.getText(),modelTabeli);
ramka.getUzytkownicyMapa().put(poleLogin.getText(),uzytkownik);
PoleInformacjiOUzytkowniku.append("Dodano uzytkownika"+"\n");
PoleInformacjiOUzytkowniku.append("imie :" + " " + uzytkownik.getImie()+"\n");
PoleInformacjiOUzytkowniku.append("nazwisko :" + " " + uzytkownik.getNazwisko()+"\n");
PoleInformacjiOUzytkowniku.append("plec :" + " " + uzytkownik.getPlec()+"\n");
PoleInformacjiOUzytkowniku.append("email :" + " " + uzytkownik.getAdresEmail()+"\n");
PoleInformacjiOUzytkowniku.append("-------------------------------------------" + "\n");
PoleInformacjiOUzytkowniku.append("login :" + " " + uzytkownik.getLogin()+"\n");
PoleInformacjiOUzytkowniku.append("haslo :" + " " + uzytkownik.getHaslo()+"\n");
System.out.println(ramka.getUzytkownicyMapa().get(poleLogin.getText()).getImie());
poleImie.setText("");
poleNazwisko.setText("");
poleEmail.setText("");
poleLogin.setText("");
poleHaslo.setText("");
try {
FileOutputStream PolaczZapiszUzytkownicy = new FileOutputStream("uzytkowinicyStan.ser");
ObjectOutputStream zapiszUzytkownicy = new ObjectOutputStream(PolaczZapiszUzytkownicy);
zapiszUzytkownicy.writeObject(ramka.getUzytkownicyMapa());
zapiszUzytkownicy.close();
} catch (Exception ex) {
// TODO Auto-generated catch block
ex.printStackTrace();
}
}
else {
PoleInformacjiOUzytkowniku.setForeground(Color.red);
PoleInformacjiOUzytkowniku.append("Proszę o uzupełnienie wszystkich danych\n");
};
}
});