Swing之儲存視窗對象XMLEncoder和XMLDecoder 類使用樣本

來源:互聯網
上載者:User

XMLEncoder 類是 ObjectOutputStream 的互補替換,可用於產生 JavaBean 的文本表示形式,所使用方式與用 ObjectOutputStream 建立 Serializable 對象的二進位表示形式的方式相同。

XMLDecoder 類用於讀取使用 XMLEncoder 建立的 XML 文檔,用途類似於 ObjectInputStream。例如,使用者可以使用以下程式碼片段來讀取以 XML 文檔形式(通過 XMLEncoder 類寫入)定義的第一個對象:

例子建立一個JFrame,用XMLEncoder將JFrame對象儲存到XML檔案中,將儲存好的XML檔案通過XMLDecoder對象讀出並顯示JFrame。

import java.awt.BorderLayout;   import java.awt.Dimension;   import java.awt.event.ActionEvent;   import java.awt.event.ActionListener;     import java.beans.XMLDecoder;   import java.beans.XMLEncoder;   import java.io.BufferedInputStream;   import java.io.FileInputStream;   import java.io.FileNotFoundException;   import javax.swing.AbstractListModel;   import javax.swing.JButton;   import javax.swing.JFrame;   import javax.swing.JList;   import javax.swing.JScrollPane;     public class JBenchFrame extends JFrame {     BorderLayout borderLayout1 = new BorderLayout();     JList list1 = new JList();     JButton fillButton = new JButton();       public static void main(String[] args) throws FileNotFoundException {   //    JBenchFrame bm = new JBenchFrame();   //   //    XMLEncoder e = new XMLEncoder(   //                          new BufferedOutputStream(   //                              new FileOutputStream("Test.xml")));   //       e.writeObject(bm);   //       e.close();           XMLDecoder d = new XMLDecoder(                             new BufferedInputStream(                                 new FileInputStream("Test.xml")));          JFrame result = (JFrame)d.readObject();          d.close();          result.setVisible(true);       }       public JBenchFrame() {       this.getContentPane().setLayout(borderLayout1);       this.setSize(new Dimension(400, 300));       fillButton.addActionListener(new ActionListener() {         public void actionPerformed(ActionEvent e) {           ListData ld = new ListData();           long tmStart = System.currentTimeMillis();           list1.setModel(ld);           list1.repaint();           long tmEnd = System.currentTimeMillis();           System.out.println(tmEnd - tmStart);           }       });       fillButton.setText("Fill");       this.getContentPane().add(new JScrollPane(list1), BorderLayout.CENTER);       this.getContentPane().add(fillButton, BorderLayout.SOUTH);       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);              }     }     class ListData extends AbstractListModel {     String[] strings = new String[10000];       public ListData() {       for (int i = 0; i < 10000; i++) {         strings[i] = "bob" + i;       }     }       public int getSize() {       return strings.length;     }       public Object getElementAt(int index) {       return strings[index];     }   }  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.