Javaプログラミング/Javaプログラミング関連情報

マルチフォントのテキストエディタを作る(4ページ目)

Javaでマルチフォントを扱うのは、意外に面倒です。ごく簡単なマルチフォント対応テキストエディタを作ってみましょう。

執筆者:掌田 津耶乃

RTFファイルの読み書き


では、このスタイル付テキストをRTFファイルに保存したり、ファイルから読み込んだりする処理はどのようにすればよいのでしょうか。今回作成したプログラムから、その処理部分をピックアップすると以下のようになります。まず、読み込みからです。

public void readFromFile(){
  StyleContext style = new StyleContext();
  DefaultStyledDocument doc = new DefaultStyledDocument(style);
  RTFEditorKit rtfkit = new RTFEditorKit();
  File file = null;
  JFileChooser chooser = new JFileChooser();
  MyRTFFilter filter = new MyRTFFilter();
  chooser.setFileFilter(filter);
  int res = chooser.showOpenDialog(this);
  if (res == JFileChooser.APPROVE_OPTION){
    try {
      file = chooser.getSelectedFile();
      InputStream stream = new FileInputStream(file);
      rtfkit.read(stream, doc, 0);
      stream.close();
      textpane.setDocument(doc);
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    } catch (BadLocationException e) {
      e.printStackTrace();
    }
  }
}


RTFを利用する場合には、「RTFEditorKit」というクラスを利用します。基本的な流れを整理すると以下のようになるでしょう。

・StyledDocumentとRTFEditorKitを用意します。
・Fileインスタンスを用意します。
・FileからFileInputStreamを作成します。
・RTFEditorKitのreadを呼び出し、InputStreamから読み込んだコンテンツをStyledDocumentに挿入します。
・StyledDocumentをJTextPaneに設定します。

続いてRTFへの書き出しです。これも本プログラムに用意されている処理をあげておきましょう。

public void saveToFile(){
  Document doc = textpane.getDocument();
  RTFEditorKit rtfEditor = new RTFEditorKit();
  File file = null;
  JFileChooser chooser = new JFileChooser();
  int res = chooser.showSaveDialog(this);
  if (res == JFileChooser.APPROVE_OPTION){
    try {
      file = chooser.getSelectedFile();
      OutputStream out = new FileOutputStream(file);
      rtfEditor.write(out,doc,0,doc.getLength());
      out.close();
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    } catch (BadLocationException e) {
      e.printStackTrace();
    }
  }
}


これも、必要となるのはRTFEditorKitと書き出し先へのOutputStreamです。こちらも処理の流れを整理しておきましょう。

・StyledDocumentを用意しておきます。
・Fileを用意します。
・RTFEditorKitのwriteを呼び出し、指定のStyledDocumentのコンテンツをOutputStreamへ書き出します。

これらのメソッドでは、この他にJFileChooserを使ったファイルダイアログの呼び出しも行っています。Swingでファイルを選択する場合、JFileChooserを使ってファイルダイアログを呼び出しますが、これはFileFilterを用意することで、特定拡張子だけを表示させたりといった制御が行えるようになります。これについても調べてみるとよいでしょう。


  • 前のページへ
  • 1
  • 3
  • 4
  • 5
  • 7
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます