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

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

          嗯,我不清楚你所說的追加是什么意思呀?可不可以描述詳細(xì)一點(diǎn)?  回復(fù)  更多評(píng)論
            
          # re: 如何完全保存JTextPane中編輯的文本和圖片的方法
          2007-05-11 22:53 | 王銳
          我最近始終想不出如何編寫保存JTextPane中編輯的文本和圖片的方法,能否向你請(qǐng)教一下,大學(xué)互相學(xué)習(xí)一下,你能否把你編寫的代碼發(fā)到我郵箱里呢,謝謝!
          我郵箱是dragonet-wl@163.com  回復(fù)  更多評(píng)論
            
          # re: 如何完全保存JTextPane中編輯的文本和圖片的方法
          2007-07-23 02:58 | 水秀清靈
          不是不給你發(fā)哦,抱歉哈,我也沒有那個(gè)代碼了,已經(jīng)是一年半以前的了,現(xiàn)在找不到了,不過,其實(shí),道理也簡單,就如我在上面所說的,將JTextPane對(duì)象通過對(duì)象序列化的方式在硬盤中保存為一個(gè)文件,下次讀取時(shí)再反序列化為完整對(duì)象。
          嗯,對(duì)象序列化的例子網(wǎng)上很好找,其實(shí),我不知道這是不是最好的主意,因?yàn)椋旧衔覜]有考慮過效率問題。  回復(fù)  更多評(píng)論
            
          # 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ù)  更多評(píng)論
            
          # re: 如何完全保存JTextPane中編輯的文本和圖片的方法
          2008-07-14 16:23 | hhhh
          如果使用了UndoableEditListener的話,就不能序列化了。  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 隆昌县| 德令哈市| 云安县| 江安县| 拜泉县| 共和县| 屏东县| 灵石县| 辽宁省| 汶上县| 贵州省| 鱼台县| 沭阳县| 栖霞市| 镇宁| 宁晋县| 古蔺县| 余姚市| 盈江县| 阿鲁科尔沁旗| 婺源县| 太保市| 镇平县| 芒康县| 天津市| 翁源县| 清新县| 两当县| 秦皇岛市| 伊吾县| 航空| 兴化市| 乌兰察布市| 南江县| 容城县| 高清| 沙雅县| 平塘县| 嘉禾县| 崇左市| 武隆县|