5

現在、マウスがクリックされた場所に基づいて、JEditorPane 内のテキストの一部の位置を見つける必要があるという問題を解決しようとしています。

基本的に、ユーザーが単語を右クリックしたときに、その単語が何であるかを調べる必要があります。これを行うには、ユーザーがクリックしたテキスト内の位置を見つける必要があります。mousePressed メソッドに渡される MouseEvent からマウスの位置を簡単に取得できることはわかっていますが、これを変換してテキスト内の文字インデックスを取得できると言われていますが、その方法がわかりませんこれ。

JEdi​​torPane で viewToModel() メソッドを試してみましたが、テキスト内の間違った位置が返されるため、間違って使用しているか、この方法では機能しません。

何か案は?

4

2 に答える 2

8

これを行うには、呼び出しviewToModel()が正しい方法です。

public void mouseClicked(MouseEvent e) {
    JEditorPane editor = (JEditorPane) e.getSource();
    Point pt = new Point(e.getX(), e.getY());
    int pos = editor.viewToModel(pt);
    // whatever you need to do here
}
于 2009-07-24T22:05:45.970 に答える
0

私は自分でこの問題を解決しました。viewToModel() はまさに私がここで使用すべきものであることがわかりました。問題は、間違った Point を渡していたことです。

MouseEvent から、getLocationOnScreen() メソッドを使用してポイントを特定していましたが、実際には getPoint() メソッドを使用する必要がありました。

この質問を読んだ人に感謝します。

于 2009-07-24T22:06:49.387 に答える