2011-07-22 11 views
1

Javaアプリケーションには、ユーザーが移動できるいくつかのJTextAreasがあります。私はそれにマウスモーションドラッグリスナーを追加することでこれを達成します。JavaのJTextAreaでドラッグと選択を区別する

public void mouseDragged(MouseEvent e) { 
    int deltaX = e.getXOnScreen() - screenX; 
    int deltaY = e.getYOnScreen() - screenY; 

    setLocation(myX + deltaX, myY + deltaY); 
    } 

彼らはそれを周りにドラッグしたい場合、ユーザはJTextArea内のテキストを選択したいとするとき、私は差別問題を抱えています。何か案は?

答えて

1

最初のマウスを操作して、テキストが選択されているかどうかを確認することができます。マウスポインタがテキストの上にある場合、それをドラッグとして識別する状態に設定します。

2

コントロールe.isControlDown()のような修飾子を使用するか、コンポーネントをドラッグするための別のマウスボタンを使用します。

+0

これはおそらく、ユーザーに迷惑をかけることのない唯一の方法です。 RockyやStanislavLのメソッドでは、マウスをドラッグして完全なテキストを選択することはできません。 – jackrabbit

1

押されたポイントのキャレット位置を取得するには、viewToModel()を使用します。キャレットの位置がgetSelectionStart()とgetSelectionEnd()の間にあるかどうかを確認してください。選択した領域にある場合はドラッグを開始します。

関連する問題