JAVA進行式
          讓我們把JAVA進行到底!
          posts - 13,comments - 21,trackbacks - 0
                  JTextPane類的對象可以顯示文本、圖片和超鏈接等,在創建了一個JTextPane類的純文本格式對象后,可以向里面填寫入文字(英文或漢字等)、插入超鏈接或圖片,但無法通過getText()方法獲得其中除文字以外的內容,也即無法保存包含文字、圖片和超鏈接的完全對象內容,而如果一開始創建的是JTextPane類的HTML格式對象,則雖然可以保存文字的樣式(顏色和字體、字號等)但無法再通過insertIcon()方法插入、顯示圖片,更不能直接保存了,考慮到的解決思路:①通過手工在HTML文件中插入<img src="02.gif">語句來實現對圖片的保存,可是這樣比較不容易實現,需要將圖片保存在特定位置,才可以在下次打開JTextPane類對象是顯示出圖片;②創建JTextPane類的純文本對象,在插入圖片、超鏈接、設置字體樣式或其它任何對JTextPane類的對象進行的格式設置時均記錄下設置的位置和內容,并和文本內容一起保存到硬盤文件中,下次讀取時,按照記錄重新恢復原內容,實現的過程更復雜;③將JTextPane對象通過對象序列化的方式在硬盤中保存為一個文件,下次讀取時再反序列化為完整對象。
                  最后,選擇了最好實現的第三種方法,序列化了JTextPane對象,表現出來的效果不錯。不過,在實現過程中未考慮程序的運行效率,現在也不太清楚,這樣的處理方式是不是比較沒有效率哩?
          posted on 2005-11-29 22:51 水秀清靈 閱讀(6434) 評論(6)  編輯  收藏 所屬分類: 學習筆記

          FeedBack:
          # re: 如何完全保存JTextPane中編輯的文本和圖片的方法
          2006-10-23 01:18 | hanzaihua
          你好,我在寫一個服務端和客戶斷通訊的程序.用的方法和你的第三種一樣.
          但問題是發送方發送圖文后,會覆蓋接受方的歷史記錄.那如何實現追加呢?
          期待你的回音.  回復  更多評論
            
          # re: 如何完全保存JTextPane中編輯的文本和圖片的方法
          2006-10-23 21:13 | 水秀清靈[匿名]
          @hanzaihua

          嗯,我不清楚你所說的追加是什么意思呀?可不可以描述詳細一點?  回復  更多評論
            
          # re: 如何完全保存JTextPane中編輯的文本和圖片的方法
          2007-05-11 22:53 | 王銳
          我最近始終想不出如何編寫保存JTextPane中編輯的文本和圖片的方法,能否向你請教一下,大學互相學習一下,你能否把你編寫的代碼發到我郵箱里呢,謝謝!
          我郵箱是dragonet-wl@163.com  回復  更多評論
            
          # re: 如何完全保存JTextPane中編輯的文本和圖片的方法
          2007-07-23 02:58 | 水秀清靈
          不是不給你發哦,抱歉哈,我也沒有那個代碼了,已經是一年半以前的了,現在找不到了,不過,其實,道理也簡單,就如我在上面所說的,將JTextPane對象通過對象序列化的方式在硬盤中保存為一個文件,下次讀取時再反序列化為完整對象。
          嗯,對象序列化的例子網上很好找,其實,我不知道這是不是最好的主意,因為,基本上我沒有考慮過效率問題。  回復  更多評論
            
          # re: 如何完全保存JTextPane中編輯的文本和圖片的方法
          2007-12-17 18:17 | 行者買刀
          private void doRead(File file) {
          FileInputStream fous = null;
          {
          ObjectInputStream ois = null;
          try {
          fous = new FileInputStream(file);
          ois = new ObjectInputStream(fous);
          text = (JTextPane) ois.readUnshared();
          if (text != null) {
          System.out.println("ok");
          }
          scrollPane = new JScrollPane(text);
          this.getContentPane().add(scrollPane);
          SwingUtilities.updateComponentTreeUI(text);
          } catch (IOException ex) {
          Logger.getLogger(TestJTextArea.class.getName()).log(Level.SEVERE, null, ex);
          } catch (ClassNotFoundException ex) {
          Logger.getLogger(TestJTextArea.class.getName()).log(Level.SEVERE, null, ex);
          } finally {
          try {
          fous.close();
          } catch (IOException ex) {
          Logger.getLogger(TestJTextArea.class.getName()).log(Level.SEVERE, null, ex);
          }
          try {
          ois.close();
          } catch (IOException ex) {
          Logger.getLogger(TestJTextArea.class.getName()).log(Level.SEVERE, null, ex);
          }
          }
          }
          }

          private void doSave(File file) {
          FileOutputStream fous = null;
          {
          ObjectOutputStream oos = null;
          try {
          fous = new FileOutputStream(file);
          oos = new ObjectOutputStream(fous);
          oos.writeUnshared(text);
          oos.flush();
          } catch (IOException ex) {
          Logger.getLogger(TestJTextArea.class.getName()).log(Level.SEVERE, null, ex);
          } finally {
          try {
          fous.close();
          } catch (IOException ex) {
          Logger.getLogger(TestJTextArea.class.getName()).log(Level.SEVERE, null, ex);
          }
          try {
          oos.close();
          } catch (IOException ex) {
          Logger.getLogger(TestJTextArea.class.getName()).log(Level.SEVERE, null, ex);
          }
          }
          }
          }  回復  更多評論
            
          # re: 如何完全保存JTextPane中編輯的文本和圖片的方法
          2008-07-14 16:23 | hhhh
          如果使用了UndoableEditListener的話,就不能序列化了。  回復  更多評論
            
          主站蜘蛛池模板: 宁夏| 札达县| 越西县| 邯郸县| 崇义县| 马关县| 彩票| 来安县| 襄樊市| 九龙县| 郸城县| 鄂州市| 连城县| 山阴县| 扎赉特旗| 民乐县| 封开县| 石狮市| 巴马| 利辛县| 屏东市| 新乡市| 昭通市| 宁明县| 体育| 宁都县| 泸定县| 海安县| 嘉鱼县| 安国市| 南召县| 高台县| 陇川县| 盈江县| 福海县| 西和县| 聂拉木县| 福贡县| 叙永县| 潍坊市| 扶余县|