2011-07-22 35 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's和StanislavL的方法不會讓用戶通過拖動鼠標來選擇完整的文本。 – jackrabbit

1

使用viewToModel()獲取按下的點的插入位置。檢查插入符的位置是否在getSelectionStart()和getSelectionEnd()之間。如果它在選定的區域開始拖動。