JAVA進行式
          讓我們把JAVA進行到底!
          posts - 13,comments - 21,trackbacks - 0
          <2007年7月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          常用鏈接

          留言簿(5)

          隨筆分類(13)

          隨筆檔案(13)

          文章分類(23)

          文章檔案(23)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

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

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

          嗯,我不清楚你所說的追加是什么意思呀?可不可以描述詳細一點?  回復(fù)  更多評論
            
          # re: 如何完全保存JTextPane中編輯的文本和圖片的方法
          2007-05-11 22:53 | 王銳
          我最近始終想不出如何編寫保存JTextPane中編輯的文本和圖片的方法,能否向你請教一下,大學(xué)互相學(xué)習(xí)一下,你能否把你編寫的代碼發(fā)到我郵箱里呢,謝謝!
          我郵箱是dragonet-wl@163.com  回復(fù)  更多評論
            
          # re: 如何完全保存JTextPane中編輯的文本和圖片的方法
          2007-07-23 02:58 | 水秀清靈
          不是不給你發(fā)哦,抱歉哈,我也沒有那個代碼了,已經(jīng)是一年半以前的了,現(xiàn)在找不到了,不過,其實,道理也簡單,就如我在上面所說的,將JTextPane對象通過對象序列化的方式在硬盤中保存為一個文件,下次讀取時再反序列化為完整對象。
          嗯,對象序列化的例子網(wǎng)上很好找,其實,我不知道這是不是最好的主意,因為,基本上我沒有考慮過效率問題。  回復(fù)  更多評論
            
          # 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);
          }
          }
          }
          }  回復(fù)  更多評論
            
          # re: 如何完全保存JTextPane中編輯的文本和圖片的方法
          2008-07-14 16:23 | hhhh
          如果使用了UndoableEditListener的話,就不能序列化了。  回復(fù)  更多評論
            
          主站蜘蛛池模板: 台前县| 垫江县| 瑞丽市| 东源县| 孟连| 长海县| 新宁县| 阜南县| 新兴县| 呼伦贝尔市| 开原市| 鲁山县| 江口县| 中超| 木里| 多伦县| 运城市| 玉田县| 满洲里市| 米泉市| 正宁县| 工布江达县| 辛集市| 肃南| 诸城市| 黄浦区| 洛南县| 阜新市| 大邑县| 牡丹江市| 集贤县| 楚雄市| 巨野县| 都兰县| 福州市| 儋州市| 漳州市| 宝兴县| 昌都县| 万全县| 卢龙县|