JFrame mit JTextPane serialisieren

sn1x

Mitglied
Moin Moin,

ich versuche nun seit einigen Tagen ein Problem zu lösen, finde aber relativ wenig zu genau dem Thema.

Ich besitze 2 Forms: LogInForm und TextForm. Die Loginform überprüft die Zugangsdaten und öffnet eine Form mit einer JTextPane, um dort Texte zu speichern. Klicke ich in der TextForm auf Save, soll der Text aus der JTextPane gespeichert werden.

Source LogInForm:
[Java]
public class LogInForm extends JFrame{

private static final long serialVersionUID = 1L;

//
//Deklaration
//
JTextField userNameField = null;
JPasswordField passwordField = null;
JLabel labelUser = null;
JLabel labelPassword = null;
User user = new User();
JOptionPane optionPane = null;
JButton buttonOK = null;
TextForm textform = null;

//Konstruktor
public LogInForm()
{
super();
//Layout setzen
setLayout(new GridLayout(0,1,20,5));
//Form initialize
setDefaultCloseOperation(EXIT_ON_CLOSE);
setTitle("LOGIN");



//OK Button
buttonOK = new JButton("OK");
getRootPane().setDefaultButton(buttonOK);
buttonOK.addActionListener(new ActionListener() {

//Username Serialisiernen
@Override
public void actionPerformed(ActionEvent arg0) {
startTextForm();
try {
OutputStream outputstream = new FileOutputStream("username.ser");
ObjectOutputStream ObjectOutPutStream = new ObjectOutputStream(outputstream);
ObjectOutPutStream.writeObject(userNameField.getText());
ObjectOutPutStream.close();
outputstream.close();

} catch (IOException e) {
e.printStackTrace();
}
}});

//UI-Elemente setzen
passwordField = new JPasswordField();
labelUser = new JLabel("Benutzername:");
labelPassword = new JLabel("Kennwort:");
userNameField = new JTextField();
userNameField.setPreferredSize(new Dimension(200,20));

add(labelUser);
add(userNameField);
add(labelPassword);
add(passwordField);

add(buttonOK);
pack();
setLocationRelativeTo(null);
//Username Deserialisieurng
try
{
InputStream inputStream = new FileInputStream("username.ser");
ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);
userNameField.setText((String) objectInputStream.readObject());
userNameField.setText((String) objectInputStream.readObject());
inputStream.close();
objectInputStream.close();
}
catch(FileNotFoundException e) {}
catch(IOException e) {}
catch(ClassNotFoundException e) {}
catch(Exception e) {}

}



private void startTextForm() {
//Abfrage, ob die Logindaten korrekt sind
if(user.checkData(userNameField.getText(), new String(passwordField.getPassword())))
{
InputStream inputStream = null;
ObjectInputStream objectInputStream = null;
//Deserialisieren der gespeicherten Links
try {
if(new File("myData.ser").exists())
{
System.out.println("Lese myData.ser");
inputStream = new FileInputStream("myData.ser");
objectInputStream = new ObjectInputStream(new BufferedInputStream(inputStream));
textform = (TextForm)objectInputStream.readObject();
System.out.println("Lese myData.ser abgeschlossen");


}

}
catch (FileNotFoundException e1) {System.out.println("FileNotFoundException beim einlesen von myData.ser");}
catch(ClassNotFoundException e) {System.out.println("ClassNotFoundException beim einlesen von myData.ser");}
catch(IOException e) {System.out.println("IOException beim einlesen von myData.ser");}
catch(Exception e) {System.out.println("Exception beim einlesen von myData.ser");}

finally{
try {
if(new File("myData.ser").exists())
{
objectInputStream.close();
inputStream.close();
objectInputStream.reset();
System.out.println("InputStreams geschlossen");
}
}
catch(IOException e)
{

}
if(textform == null)
{
textform = new TextForm(this);
System.out.println("Neue Form erstellt, da textform == null");
}
}

//Rufe TextForm auf, und warte bis geschlossen
this.setVisible(false);
textform.setVisible(true);
this.setVisible(true);
passwordField.setText("");



//Bei Save werden die Links serialisiert
if (textform.getResult() == DialogStatus.Save) {
OutputStream outputstream = null;
ObjectOutputStream objectOutPutStream = null;

try{
System.out.println("Result.Save -> schreibe myData.ser");
outputstream = new FileOutputStream("myData.ser");
objectOutPutStream = new ObjectOutputStream(new BufferedOutputStream(outputstream));
objectOutPutStream.writeObject(textform);

System.out.println("Schreibe myData.ser abgeschlossen");
}
catch(FileNotFoundException e) {System.out.println("FileNotFoundException beim schreiben");}
catch(IOException e) {System.out.println("IOException beim schreiben " + e.getMessage());}
catch (Exception e) {System.out.println("Eexception beim schreiben");}
finally {
try {
objectOutPutStream.close();
outputstream.close();
objectOutPutStream.reset();
System.out.println("OutputStreams geschlossen");
}
catch(IOException e)
{

}
}

}
textform.setResult(DialogStatus.OK);

}
else JOptionPane.showMessageDialog(null, "Acces denied. wrong password or username");

}
[/Java]

Source TextForm:
Java:
public class TextForm extends JDialog implements Serializable {

    private static final long serialVersionUID = 7437549011702785251L; // 7437549011702785251L
    //DEKLARATION
    
    //private JTextPane     textfield = null;
    private JTextPane jlist = null;
    private JButton     buttonSave = null;
    private JButton     buttonCancel = null;
    private JPanel         pnlTextBox = new JPanel(new BorderLayout());
    private JPanel         pnlButtons = new JPanel(new GridLayout(1, 3, 20, 20));
    
    DialogStatus result;
    
    public TextForm(LogInForm LogForm)
    {
        //Macht den JDialog modal!
        super(LogForm, true);
        
        //FORM
        setTitle("TEXTEditor");
        setSize(700,500);
        setLocationRelativeTo(null);    
        
        //TEXTBOX
//        textfield = new JTextPane();
//        textfield.setContentType("text/html");
        jlist = new JTextPane();
        pnlTextBox.add(jlist, BorderLayout.CENTER);
        pnlTextBox.add(new JScrollPane(jlist));
        
        //BUTTONS
        buttonSave = new JButton("Save");
        pnlButtons.add(buttonSave);
        buttonCancel = new JButton("Cancel");
        pnlButtons.add(buttonCancel);
        
        //PANELS
        add(pnlTextBox, BorderLayout.CENTER);
        add(pnlButtons, BorderLayout.SOUTH);
        
        
        //EVENTS
        buttonCancel.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent arg0) {
                result = DialogStatus.OK;
                setVisible(false);
            }});
        
        
        buttonSave.addActionListener(new ActionListener() {
            
            @Override
            public void actionPerformed(ActionEvent arg0) {
                result = DialogStatus.Save;
                setVisible(false);
            }});}
        
        
        

    public void setResult(DialogStatus result) {
        this.result = result;
    }
    public DialogStatus getResult()
       {
          return result;
       }

    
    
}

Das Problem:
Wenn ich die Textform serialisiere, schreibt er die myData.ser ohne eine IOException.
Dann öffne ich sie wieder, d.h. er deserialisiert sie wieder.
Klicke ich nun auf die Buttons in der TextForm reagieren sie garnicht auf die Mausklicks. Irgendwie scheint er sie nicht richtig serialisiert bzw. deserialisiert zu haben, gibt aber bis dahin keine Fehlermeldung.

Provoziere ich eine Exception durch häufiges öffnen und schliessen (über das X), wirft er folgendes:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.plaf.basic.BasicTextUI.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at javax.swing.JEditorPane.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.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validate(Unknown Source)
at java.awt.Dialog.conditionalShow(Unknown Source)
at java.awt.Dialog.show(Unknown Source)
at java.awt.Component.show(Unknown Source)
at java.awt.Component.setVisible(Unknown Source)
at java.awt.Window.setVisible(Unknown Source)
at java.awt.Dialog.setVisible(Unknown Source)
at LogInForm.startTextForm(LogInForm.java:157)
at LogInForm.access$0(LogInForm.java:109)
at LogInForm$1.actionPerformed(LogInForm.java:62)
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.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)[/code]

Ich nutze Eclipse Version: Helios Release, Build id: 20100617-1415 unter Windows XP SP3.
Java 1.6.0_21

Falls Infos fehlen, lasst es mich wissen. Ich nehme auch gerne allgemeine Programmiertipps entgegen.
Vielen Dank. MfG,
Timo
 

sn1x

Mitglied
Stimmt, das wäre einfacher. Das Tool schreibe ich aber nur aus dem Grund, weil ich lernen möchte. Mein Ziel ist es, komplette Objekte zu serialisieren. Oder gibt es Probleme, wenn man komplette GUI-Forms serialisiert?
 

Cherry

Mitglied
Hallo,

ich habe so ein ähnliches Problem, aber in einem anderen Thread.
Nur ich weiß noch gar nicht richtig wie das Serialisieren funktioniert.:(
 
G

Gast2

Gast
Stimmt, das wäre einfacher. Das Tool schreibe ich aber nur aus dem Grund, weil ich lernen möchte. Mein Ziel ist es, komplette Objekte zu serialisieren. Oder gibt es Probleme, wenn man komplette GUI-Forms serialisiert?
Naja, die Objekte müssen alle Serializable implementieren damit das serialisieren funktioniert. Und ich weiß nicht ob die das alle machen.
Der ActionListener z.b. macht das nicht, daher funktionieren deine Buttons nach dem Laden auch nichtmehr.
Und es macht halt auch einfach keinen Sinn sachen zu serialisieren die du in deinem Programm sowieso wieder "per Hand" zusammenbaust^^

Ansonsten kannst du alles serialisieren was du willst, es muss halt Serializable implementieren :)
 

sn1x

Mitglied
Ohh und ich dachte, es reicht, wenn das Objekt nur serializable implementiert und nicht alle geerbten Klassen. Dann ist es logisch und erklärt sich mir von selbst. Vielen Dank!

//Ich weiß, dass es nicht logisch ist, es sollte legidlich einem "Test" dienen.

MfG!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
fragenÜber(fragen); Turtle Grafik mit GUI (JFrame) Java Basics - Anfänger-Themen 3
E JFrame + Buffer-strategy Java Basics - Anfänger-Themen 8
I JFrame / Screen auf zweitem (definiertem) Monitor öffnen Java Basics - Anfänger-Themen 3
luggas89 Mit Jframe live zeichnen Java Basics - Anfänger-Themen 4
C mehrere JPanel in ein JFrame bringen Java Basics - Anfänger-Themen 9
B HSQL mit JFrame steuern Java Basics - Anfänger-Themen 4
D Wie Objekte im JFrame frei bewegen lassen? Java Basics - Anfänger-Themen 3
D Erste Schritte png in JFrame anzeigen? Java Basics - Anfänger-Themen 3
Thomathy Interface Wie schließt man ein anderes JFrame Fenster? Java Basics - Anfänger-Themen 6
D Probleme mit JFrame und der Größe Java Basics - Anfänger-Themen 8
P JFrame, Linien zeichnen, MouseListener Java Basics - Anfänger-Themen 2
S Kontrollieren ob jframe disposed ist Java Basics - Anfänger-Themen 3
Elyt JFrame in den Hintergrund verschieben Java Basics - Anfänger-Themen 3
OSchriever JFrame-Anwendungsfenster verschieben Java Basics - Anfänger-Themen 17
M Bild in JFrame Java Basics - Anfänger-Themen 1
S Klassenaufruf über JFrame Button Java Basics - Anfänger-Themen 3
W 2 JPanel in einem JFrame Java Basics - Anfänger-Themen 4
CptK Interface Klasse Frame (extends JFrame) aus anderer Klasse schließen Java Basics - Anfänger-Themen 7
S JFrame mit Hintergrundbild und Button Java Basics - Anfänger-Themen 4
S JFrame Java Basics - Anfänger-Themen 15
I JFrame proportional verkleinerbar machen Java Basics - Anfänger-Themen 3
B Java JFrame zeichnen Java Basics - Anfänger-Themen 4
ReinerCoder Vererbung von JFrame in einer Klasse entfernen Java Basics - Anfänger-Themen 5
T Auslagern von Methoden bei einem JFrame Java Basics - Anfänger-Themen 6
N Erste Schritte JFrame Caesar-Verschlüsselung Java Basics - Anfänger-Themen 23
B Erste Schritte Objekte von JFrame der Fenstergröße anpassen Java Basics - Anfänger-Themen 3
J JFrame Fenster öffnet sich nicht Java Basics - Anfänger-Themen 7
3 JFrame immer im Hintergrund Java Basics - Anfänger-Themen 1
F Interface JFrame mit if-Abfrage automatisch schließen lassen? Java Basics - Anfänger-Themen 3
R JFrame nicht verschiebbar Java Basics - Anfänger-Themen 2
T Wenn JFrame Textfelder Hintergrund Grün dann... (if) Java Basics - Anfänger-Themen 3
K Java JFrame mit Hintergrundbild erstellen Java Basics - Anfänger-Themen 1
Aruetiise Variablen JFrame und Variablen Java Basics - Anfänger-Themen 3
H Eclipse JFrame Java Basics - Anfänger-Themen 3
C Variablen von einem JFrame in einen anderen übertragen Java Basics - Anfänger-Themen 3
M Bild wird von JFrame nicht geladen Java Basics - Anfänger-Themen 12
I JFrame minimieren wenn anderes Programm minimiert wird Java Basics - Anfänger-Themen 1
K Methoden Methode starten wenn JFrame geöffnet wird Java Basics - Anfänger-Themen 2
D Erste Schritte JFrame Inhalte werden nicht angezeigt Java Basics - Anfänger-Themen 8
A Variablen In anderer Klasse auf Objekte von JFrame zugreifen Java Basics - Anfänger-Themen 1
B Ist MyFrame oder JFrame besser? Java Basics - Anfänger-Themen 3
Y JFrame sichtbarkeit Java Basics - Anfänger-Themen 4
KeVoZ_ Label auf JFrame willkürlich Positionieren Java Basics - Anfänger-Themen 2
Dechasa Interface JFrame mit mehreren Übereinander liegenden JPanel Java Basics - Anfänger-Themen 5
P JFrame nur einmal öffnen Java Basics - Anfänger-Themen 4
D JFrame - 10 Sekunden bis zum schließen warten. Java Basics - Anfänger-Themen 2
V Tastatur initialisieren JFrame Probleme Java Basics - Anfänger-Themen 6
J JPG in JFrame anzeigen lassen Java Basics - Anfänger-Themen 3
J JFrame ausgabe von Werten Java Basics - Anfänger-Themen 9
F GUI als Klasse oder extend JFrame? Java Basics - Anfänger-Themen 6
F JFrame resize verschiebt JPanel Java Basics - Anfänger-Themen 3
S Wieso wird mein JFrame transparent dargestellt? Java Basics - Anfänger-Themen 5
L [JFrame] Exception - woher? Java Basics - Anfänger-Themen 8
thomasbomme Grafikfehler JFrame- Cleartype Java Basics - Anfänger-Themen 1
GreyFox Arbeit mit JFrame Java Basics - Anfänger-Themen 8
T Erste Schritte 2 Codes zusammen fügen / Label in JFrame Java Basics - Anfänger-Themen 1
Z Zwei Images auf einem JFrame - Aber nur eins wird angezeigt! Java Basics - Anfänger-Themen 5
N Input/Output Wenn kein Input, dann Fehler anzeigen lassen im JFrame Java Basics - Anfänger-Themen 6
W 2 JPanels in 2Klasse in einem JFrame zusammenfügen Java Basics - Anfänger-Themen 12
dat_vin JFrame öffnet sich mehrmals Java Basics - Anfänger-Themen 6
M JFrame Bild einfügen Java Basics - Anfänger-Themen 3
M Rahmen für undekorierten JFrame Java Basics - Anfänger-Themen 6
S JPanel wird versetzt auf JFrame gelegt Java Basics - Anfänger-Themen 2
B Erste Schritte JFrame in Klasse auslagern Java Basics - Anfänger-Themen 4
H JFrame komplett schließen Java Basics - Anfänger-Themen 3
S Brauche hilfe bei Pong (JFrame) Java Basics - Anfänger-Themen 2
M hintergrund in jframe festlegen Java Basics - Anfänger-Themen 4
J JFrame Render Fehler - Warum? Java Basics - Anfänger-Themen 2
I komponenten werden in JFrame nicht richtig angezeigt Java Basics - Anfänger-Themen 1
E 2. JFrame erkennt 1. Frame Java Basics - Anfänger-Themen 6
D Best Practice JFrame im JFrame Java Basics - Anfänger-Themen 2
P Bild in JFrame Titelleiste Java Basics - Anfänger-Themen 7
S Erste Schritte Von JFrame in nächstes JFRame wechseln Java Basics - Anfänger-Themen 0
V JFrame aktualisieren Java Basics - Anfänger-Themen 6
S JFrame ist nicht schwarz Java Basics - Anfänger-Themen 5
B JPanel/JFrame in ein Applet umwandeln (Webfähig) Java Basics - Anfänger-Themen 7
S Interface JButton etc. wird in JFrame mit paint() nicht angezeigt Java Basics - Anfänger-Themen 6
S JFrame wird nicht "bemalt" Java Basics - Anfänger-Themen 2
M Unsichtbare Objekte in JFrame Java Basics - Anfänger-Themen 2
S Textdatei einlesen und JFrame füllen Java Basics - Anfänger-Themen 14
Sogomn JLabel in anderer Klasse zum JFrame hinzufügen Java Basics - Anfänger-Themen 2
B Drawline wird auf JFrame nicht angezeigt Java Basics - Anfänger-Themen 3
N Fokus setzen nachdem JFrame in Vordergrund geholt wurde Java Basics - Anfänger-Themen 7
K Methoden Objekt auf JFrame zeichnen Java Basics - Anfänger-Themen 16
S JFrame leeren Java Basics - Anfänger-Themen 6
X JFrame Fenster einzeln schließen Java Basics - Anfänger-Themen 2
J Klick auf Button -> JFrame öffnet sich erneut. & Datei lässt sich nicht löschen Java Basics - Anfänger-Themen 7
K Erste Schritte Jframe Im Jpanel Java Basics - Anfänger-Themen 4
D Kein Zugriff auf JFrame Java Basics - Anfänger-Themen 2
P JFrame Component automatische Größe verhindern Java Basics - Anfänger-Themen 2
D JFrame, Komponenten verschmiert. Java Basics - Anfänger-Themen 15
M Schriftfarbe in JFrame Java Basics - Anfänger-Themen 24
A JFrame läuft ewig? Java Basics - Anfänger-Themen 2
U JFrame durch ActionListener erweitern Java Basics - Anfänger-Themen 4
B Wie kann man auf das JFrame einer anderen Klasse zugreifen, etwas hinzufügen und entfernen?? Java Basics - Anfänger-Themen 3
N JFrame-Objekt in neuer Methode nicht verfügbar? Java Basics - Anfänger-Themen 3
A Frage zu: JFrame setLocationRelativeTo Java Basics - Anfänger-Themen 3
N Erste Schritte Prozessor Kernanzahl in JFrame Java Basics - Anfänger-Themen 3
DStrohma Transparenter JFrame Java Basics - Anfänger-Themen 3
R JFrame über einen JPanel Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben