Swing 組件(JButton、JTree 等)實作了 Serializable 介面,因此可直接使用 Java 序列化機制持久化至檔案或網路傳輸。
ObjectOutputStream.writeObject(obj)ObjectInputStream.readObject()(需強制轉型)import java.io.*;
import javax.swing.*;
public class SwingSerializationDemo {
public static void main(String[] args) {
// 建立組件
JButton button = new JButton("TEST Button");
JTree tree = new JTree();
// 序列化寫入檔案
try (ObjectOutputStream outBtn = new ObjectOutputStream(new FileOutputStream("button.ser"));
ObjectOutputStream outTree = new ObjectOutputStream(new FileOutputStream("tree.ser"))) {
outBtn.writeObject(button);
outTree.writeObject(tree);
System.out.println("序列化完成");
} catch (IOException e) { e.printStackTrace(); }
// 反序列化讀取
try (ObjectInputStream inBtn = new ObjectInputStream(new FileInputStream("button.ser"));
ObjectInputStream inTree = new ObjectInputStream(new FileInputStream("tree.ser"))) {
JButton btnRestored = (JButton) inBtn.readObject();
JTree treeRestored = (JTree) inTree.readObject();
System.out.println("反序列化成功:" + btnRestored.getText());
} catch (IOException | ClassNotFoundException e) { e.printStackTrace(); }
}
}
NotSerializableException。serialVersionUID)與向相容性。