2012-10-26 2 views
0

입력 된 데이터를 영구 보존 할 수 없다는 문제점이 있습니다. Java Swing GUI를 XML 파일에 저장하고 후자를 재사용하고 싶습니다. 이제 GUI를 성공적으로 저장합니다. 하지만 텍스트 필드에 일부 데이터를 입력하면됩니다. 형식화 된 데이터는 XML 파일로 인코딩 할 수 없습니다. GUI와 입력 된 내용을 모두 저장할 수있게 도와 주시겠습니까? 다음은 javabeans XMLencoder를 사용하는 코드입니다.Javabeans는 입력 데이터를 지속적으로 유지할 수 없습니다.

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.BorderFactory; 
import javax.swing.BoxLayout; 
import javax.swing.JButton; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JSeparator; 
import javax.swing.JTextField; 
import javax.swing.JTextPane; 
import java.beans.*; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import javax.swing.JFileChooser; 
import javax.swing.JFrame; 
import javax.swing.JOptionPane; 


public class ResourceName extends JFrame implements ActionListener{ 
static JFileChooser chooser; 
JButton save,load; 
JTextField tf; 
static JFrame frame; 
public ResourceName(){ 

    chooser = new JFileChooser(); 
    chooser.setCurrentDirectory(new File(".")); 

    frame = new JFrame("ResourceName"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setLayout(new FlowLayout()); 
    save = new JButton("Save"); 
    save.setActionCommand("Save"); 
    save.addActionListener(this); 

    load = new JButton("Load"); 
    load.setActionCommand("Load"); 
    load.addActionListener(this); 
    tf = new JTextField(10); 

    frame.add(save); 
    frame.add(tf); 
    frame.add(load);  

    frame.pack(); 
    frame.setVisible(true); 
} 

    public void actionPerformed(ActionEvent e){ 

     if((e.getActionCommand()).equals("Save")) 
     { 
      save(); 
     }else if((e.getActionCommand()).equals("Load")) 
     { 
      load(); 
     } 
    } 


public void save() 
{ 
    if(chooser.showSaveDialog(null)==JFileChooser.APPROVE_OPTION) 
    { 
     try{ 
      File file = chooser.getSelectedFile(); 
      XMLEncoder encoder = new XMLEncoder(new FileOutputStream(file)); 
      encoder.writeObject(frame); 
      encoder.close(); 
     } 
     catch(IOException e) 
     { 
      JOptionPane.showMessageDialog(null, e); 
     } 
    } 
} 
    public void load() 
{ 
    //show file chooser dialog 
    int r = chooser.showOpenDialog(null); 

    // if file selected, open 
    if(r == JFileChooser.APPROVE_OPTION) 
    { 
     try 
     { 
      File file = chooser.getSelectedFile(); 
      XMLDecoder decoder = new XMLDecoder(new FileInputStream(file)); 
      decoder.readObject(); 
      decoder.close(); 
     } 
     catch(IOException e) 
     { 
      JOptionPane.showMessageDialog(null, e); 
     } 
    } 
} 

public static void main(String[] args) { 

    ResourceName test = new ResourceName(); 

} 
} 

이 문제를 해결할 수 있도록 도와주세요. 많은 감사!

답변

0

text 속성이 transient 일 수 있습니다. 이는 자동으로 ObjectOutputStream에 의해 출력에 저장되지 않음을 의미합니다. 아마도 해당 필드를 명시 적으로 작성해야합니다.

관련 문제