2

Aを使用すると、画像を埋め込むJTextPaneことができます。ドキュメントのセクションを選択すると、テキストは強調表示されますが、埋め込まれたアイテムは強調表示されません。イベント後に埋め込みコンポーネントに通知することはできますが、マウスの選択中にそれらを強調表示する方法があるかどうか疑問に思いました。JComponentsCaretListener

4

3 に答える 3

0

あなたはMouseMotionListenerを使用して、mouseDraggedイベントを処理することができます。次に、viewToModel()メソッドを使用して、モデルのどの部分が選択されているかを知る必要があります。

于 2009-10-23T15:52:17.043 に答える
0

HighlighterカスタムをにインストールしますJTextPane。これにより、埋め込みコンポーネントを強調表示する必要があるかどうかを通知できます。

textPane.setHighlighter( new CustomHighlighter() );

// ...

private final class CustomHighlighter extends DefaultHighlighter {

    @Override
    public Object addHighlight( int p0, int p1, HighlightPainter p ) throws BadLocationException {
       Object tag = super.addHighlight(p0, p1, p);
       /* notify embedded components ... */ 
       return tag;
    }

    @Override
    public void removeHighlight( Object tag ) {
        super.removeHighlight(tag);
       /* notify embedded components ... */ 
    }

    @Override
    public void removeAllHighlights() { 
        super.removeAllHighlights();
       /* notify embedded components ... */ 
    }

    @Override
    public void changeHighlight( Object tag, int p0, int p1 ) throws BadLocationException {
       super.changeHighlight(tag, p0, p1);
       /* notify embedded components ... */ 
    }
}
于 2009-10-28T12:37:50.510 に答える
-1

さて、私はずっと昔に似たようなことをしました。私の場合、埋め込まれたコンポーネントはチャットエディタのスマイリーでした。選択が行われると、マークとドット(e.getMark、e.getDot)が表示されます。スマイリーがマークとドットの間にある場合は、強調表示されているはずなので、強調表示するようにスマイリーコンポーネントにフィールドを設定し、再描画リクエストを入力します。最後に、スマイリーコンポーネントのpaint(g)メソッドでは、強調表示されたとおりにペイントします。

于 2009-10-26T14:33:27.217 に答える