私は文字と記号を表示するのにJTextPane
を使用しています。後者はカスタムJComponents
で表されます。たとえば、テキストペインに次のような文字が表示されることがあります。 テキストペインはユーザーが編集可能で、ボタンを使用して任意の位置に、選択したテキストの代わりにシンボルを追加できます。私はこれをJTextPane.insertComponent()
メソッドで行います。アプリケーションのある時点で、テキストペインに現在表示されている内容を知る必要があります。これは、入力されたテキストだけでなく、その中に含まれる正確なコンポーネントも意味します。JTextPaneからjavax.swing.text.Elementを介してコンポーネントを取得しますか?
Positions
とDocumentListeners
で大規模なトラブルが発生しましたが、私のテキストペインの内容を管理していましたが、解決していた以上の問題が続きました。だから私は最終的に、私の悩みはおそらく私の部分の設計上の不具合によると判断したので、私はテキストペインを介して自分のコンポーネントに到達できない場合、私は見ることにしました。
AbstractDocument
とその他の関連クラスのドキュメントとソースコードを検索すると、インターフェイスjavax.swing.text.Element
が見つかりました。私はその後、私のアプリケーションの出力聞かせてくれました
for(int i = 0; i < textPane.getDocument().getLength(); i++) {
System.out.println(((StyledDocument) textPane.getDocument()).getCharacterElement(i));
}
:
LeafElement(コンテンツ)0,4
LeafElement(コンテンツ)0,4
LeafElement(コンテンツ)0を、4
リーフエレメント(内容)0,4
LeafElement(成分)4,5-
LeafElement(コンテンツ)5,9
LeafElement(コンテンツ)5,9
LeafElement(コンテンツ)5,9
LeafElement(コンテンツ) 5,9
LeafElement(成分)9,10
その見私が得たには、Document
のどの位置に何が表示されているのかについて何らかの情報があるようですが、その位置で実際のコンテンツを取得することができるはずです。別の30分を検索した後、それぞれの要素がどのように表現されているかを調べると、私はここで質問を投稿し、あなたの中にはこれを達成する方法を知りたいと思っていました。私が見た
この誰かが実際JTextPane
に含まれる成分の正確な数を有する成分の配列を返しtextPane.getComponents()
を通じてコンポーネントにアクセスしようと、彼らは明らかのあるタイプjavax.swing.text.ComponentView$Invalidator
の全てであるquestion私には役に立たない。元のタイプのシンボルへのキャストが機能しないため、ここから正しく続ける方法がわかりません。
TL; DR
はどうすればJTextPane
のテキスト、およびテキスト・ペインからその位置の内側にあるJComponent
を得るのですか?
うまくいけば、この[回答](http://stackoverflow.com/a/10463120/1057230)は、ポジショニングに関するいくつかのアイデアを提供するのに役立ちます。 +1注目:-) –
@Gagandeep Bali注目してくれてありがとう:-)。あなたの答えは面白いですが、不幸にも、コンポーネントの 'Location'を知る必要はなく、テキスト内のインデックスとしてas-inの位置を知る必要があるので、私の問題には当てはまりません。しかし、コンポーネント自体にアクセスできない場合、私の目標に絶対に必要なものはすべて無駄です。 – nfs
Ahha、この知識はまだ私の把握の範囲外です。知恵を持って欲しい人、すぐに話題に光を入れられるようにしてください:-)最高の恋人... –