2012-03-28 11 views
0

Java/Swingでテキストエディタ型アプリケーションを作成しようとしています。 FileChooserが動作していて、ファイルの内容をコンソールに出力できます。ファイルをJEditorPaneにロードしたいJEditorPaneにJava Swingファイルをロード

setText()を呼び出すと、テキストの値が更新されます(getTextの結果を出力できますが、実際のEditorPaneはリフレッシュしません)。私は、JEditorPane、JScrollPaneをカプセル化しているrepaint/revalidateを呼び出そうとしましたが、setTextに送信したテキストを更新するものは何もありません。

何か不足していますか?

P.S. JEdi​​torPaneはJScrollPaneの中にラップされており、mainEditorにはJEditorPaneのsetTextメソッドに文字列を渡すメソッドがあります。

 if (r == JFileChooser.APPROVE_OPTION) 
     { 
      FileInputStream fis; 
      BufferedReader br; 
      try 
      { 
       fis = new FileInputStream( 
         chooser.getSelectedFile()) ; 
       br = new BufferedReader( 
         new InputStreamReader(fis)) ; 
       String read ; 
       StringBuffer text = new StringBuffer() ; 
       while((read = br.readLine()) != null) 
       { 
        text.append(read).append("\n") ; 
       } 
       Main.frame.mainEditor.setText(text.toString()) ; 
       Main.frame.mainEditor.revalidate(); 
      } 
      catch(IOException e1) 
      { 
       JOptionPane.showMessageDialog(this , 
        "Error in File Operation" , 
        "Error in File Operation" , 
        JOptionPane.INFORMATION_MESSAGE) ; 
      }    
     } 
+0

ためのInputStreamのための方法あなたが全体のコードを配置した場合、私たちはあなたを助けることができるかもしれない使用。私はあなたのコードに大きな問題は見当たらず、テキストを設定するだけでそれができるはずです。あなたは "Some text blah blah blah"のような静的なStringであなたの呼び出しを置き換えようとしましたか? –

答えて

4

File基準にStringを形成setPage(URL)を呼び出し、次にURLにそれを変換します。

例としてhereを参照してください。

3

ビルトインJTextComponentsファミリー

JTextCompoents#read();

JTextComponents#write();

+1

脇に。これはより良い答えです。コードがすでに言及しているストリームに直接参照するだけでなく、入力**と出力**(エディタには明らかに必要となるでしょう)の両方をカバーします。 +1(前から) –

+2

@Andrew Thompsonのみジョーク、2つの利点があります:-) 1)ホイールを改造しない、2)すべてのCR、LR ...セパレータのタイプを受け入れるか?すべて ??? Javaアプリケーションの実行が可能なネイティブOS(インストールされているJREのみ) – mKorbel