ちょっと質問/問題があります。Java Swing StyledDocument get要素ツリー/ SelectedText太字のイタリック体のようなスタイル
テキスト編集のための小さなプログラムを作成する必要があります。 (選択された)テキストはスタイルでなければなりません。太字、イタリック、アンダーライン、右揃え。 素晴らしいです。私は特定のStyleEditorKitアクションを使用しました。
私の問題は、このアクションが、jmenu/jmenubarのjtoolbarとjmenuitemsのボタンによって起動されるということです。
テキストを太字に設定する2つのクリック要素、テキストを斜体に設定する2つの要素などがあります。 1つの要素(ツールバーのボタンなど)をクリックすると、jmenuitemも選択/アクティブ化する必要があります。 しかし、どうやってこれを実現することができますか?
私の考えは、選択されたテキストをチェックすることです(CaretListenerが実装されています)。テキストが太字であれば、>ボタンとメニューがアクティブになります。 しかし、selectedTextが太字/斜体などの場合、どうすれば入手できますか?
私は、このようなもののためにリーフ付きのStyledDocumentツリーがあると思います。しかし、どうすればこの木を手に入れることができますか?どのように私は葉を得ることができますか?私は木の上に反復処理し、葉/太字や斜体の要素を取得できますか[email protected]
jTextPane1.addCaretListener(new CaretListener() {
@Override
public void caretUpdate(CaretEvent e) {
Highlight[] h = jTextPane1.getHighlighter().getHighlights();
for(int i = 0; i < h.length; i++) {
System.out.println(h[i].getStartOffset());
System.out.println(h[i].getEndOffset());
String selectedText = jTextPane1.getSelectedText();
StyledDocument styleddoc = (StyledDocument) jTextPane1.getDocument();
System.out.println(styleddoc);
}
}
});
しかし、私は取得のみ:
これが私の最初のステップです?
はselectedTextがなど太字/イタリックであればどのように私は得ることができますか?あなたの
ありがとうございました。 属性のあるものは機能します。しかし、私は私の全体のテキストを選択した場合、それは偽を返します...私は最後の文字なしですべてを選択した場合、それは真を返します... 私はBoldActionを使用しました。ボタンを選択または有効にする必要がありますか? –
System.out.println(attributes.containsAttribute(StyleConstants.Italic、Boolean.TRUE))); それは毎回falseを返します... –
'私のテキスト全体を選択すると、falseを返します。 ' - 選択したテキストの個々の文字を繰り返し処理できると思います。すべての文字は太字でなければなりません。有効になっていない場合は、ボタンをクリックすることはできません。ボタンを有効または選択しないでください。あなたはアクションを変更します。 – camickr