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í),道理也簡(jiǎn)單,就如我在上面所說的,將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)論
            
          主站蜘蛛池模板: 新和县| 台中县| 武威市| 东辽县| 夏津县| 伊通| 泽州县| 吴川市| 眉山市| 南部县| 遵义县| 江门市| 宜丰县| 黑河市| 宣武区| 弥勒县| 平武县| 北碚区| 偏关县| 澄城县| 龙川县| 玉田县| 津市市| 军事| 龙州县| 洪泽县| 绿春县| 行唐县| 舞钢市| 锦屏县| 印江| 鹰潭市| 神农架林区| 上杭县| 郎溪县| 宝应县| 宜丰县| 哈尔滨市| 白河县| 巴中市| 会东县|