2012-01-03 9 views
0

テキストエディタでファイルを開くと、私はテキストペインでファイルの場所を取得しています。私はどこかで簡単な間違いをしていますか、これを行う良い方法がありますか? ArrayListを使用してイメージの場所を格納する必要がありますか?文書を開くときにURLのイメージを実際のイメージに変換する

何が起こっているかの例:私は2つのラインを持っているファイルを持っている...


C:\ ... \ pic.png
(写真説明)


ファイルを開くときに(テキストエディターで保存した後)、実際の画像の場所が表示されます。 BufferedImageを使用してディレクトリを取得し、JTextPaneにイメージを追加できるようにします。そうでない場合(テキストが場所でない場合)、テキストペインにテキストを追加するだけです。 FYI

:にtextAreaのタイプは、あなたがこのコードについてご質問があるか、明確化が必要な場合は、私のファイル


// sb is my StringBuffer 

try 
{ 
    b = new BufferedReader(new FileReader(filename)); 
    String line; 

    while((line=b.readLine())!=null) 
    { 
     if (line.contains("C:\\...\\Pictures\\")) 
     { 
      BufferedImage image = ImageIO.read(new File(line)); 
      ImageIcon selectedPicture = new ImageIcon(image); 
      textArea.insertIcon(selectedPicture); 
     } 

     sb.append(line + "\n"); 
     textArea.setText(sb.toString()); 
    } 

    b.close(); 
} 

を開きJTextPaneの

コードです、ためらうことはありません。

+0

ファイルには何がありますか?単純にHTMLファイルを使用してみませんか? –

+0

'textArea.setText'は、' textArea.insertIcon'を実行した後に実行されると、すべてのコンテンツを変更しませんか?あなたの入力ファイルはどのように見えますか? –

+0

@JBNizetテキストエディタアプリケーションで開こうとしているテキストファイルです。 – Rob

答えて

1

OK。コンテンツをJTextPaneに設定する方法は間違っています。 基本的なやり方は、StyleDocumentJTextPaneの外にして、Styleを文書に設定することです。スタイルは基本的にコンポーネントのレンダリング方法を説明します。たとえば、テキストの書式設定、イメージアイコン、スペーシングなど。

次のコードを実行すると、

JTextPane textPane = new JTextPane(); 
    try { 
     BufferedReader b = new BufferedReader(
       new FileReader("inputfile.txt")); 
     String line; 
     StyledDocument doc = (StyledDocument) textPane.getDocument(); 

     while ((line = b.readLine()) != null) { 

      if (line.contains("/home/user/pictures")) { 
       Style style = doc.addStyle("StyleName", null); 
       StyleConstants.setIcon(style, new ImageIcon(line)); 
       doc.insertString(doc.getLength(), "ignore", style); 

      } else { 
       Style textStyle = doc.addStyle("StyleName", null); 
       //work on textStyle object to get required color/formatting. 
       doc.insertString(doc.getLength(), "\n" + line, textStyle); 
      } 
     } 

     b.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
+0

うわー、とてもクール!助けてくれてありがとう(特にその例)。 – Rob

関連する問題