私のswingアプリには、ユーザーがWYSIWYG形式でテキストを編集できるJEditorPaneが含まれています。これには、太字、斜体、フォントの設定などのツールバーボタンが含まれます。
JEditorPaneのコンテンツタイプはtext/htmlです。
問題:ユーザーは、エディターペインにタブ文字を入力し、編集ダイアログを閉じて(HTMLテキストを永続ストレージに保存)、タブがレンダリングされることを確認したいと考えています。ただし、HTMLはすべての空白の実行を単一のスペースとして扱います。
public class NoteTest {
public static void main(String[] args) {
final JEditorPane editPane1 = new JEditorPane("text/html", "Try typing some tabs");
editPane1.setPreferredSize(new Dimension(400, 300));
JOptionPane.showMessageDialog(null, new JScrollPane(editPane1));
JOptionPane.showMessageDialog(null, new JScrollPane(new JEditorPane("text/html", editPane1.getText()))); // where did the tabs go?
}
}
最初のJEditorPaneにタブを入力した後、そこからHTMLテキストを取得し、それを2番目のJEditorPaneに渡します。これにより、タブがスペースとしてレンダリングされます。
これらのタブをレンダリングするにはどうすればよいですか?ユーザーが入力したコンテンツをHTMLではなくRTFとして保存する必要がありますか?HTMLを解析して、行とセルを含むHTMLテーブルを作成する必要があります(ugh)。または、swingにタブ文字をタブとしてレンダリングするように指示する方法はありますか?