2012-07-24 103 views
0

我在選擇監聽器時遇到了一些麻煩,目前我已經獨立試驗了從TOP到BOTTOM和BOTTOM到TOP(鼠標移動)的文本選擇,但是這些試驗不會一起工作即一個 SelectionListener中是雙向的......向SelectionListener添加雙向功能

private void setupSelectionListener() { 

    this.contentValues.addSelectionListener(new SelectionListener() { 

     @Override 
     public void widgetSelected(SelectionEvent event) { 

      StyledText text = (StyledText)event.widget; 

      int x = event.x; 
      int y = event.y; 

      //Mouse Drag Listener here??? - Detects Right 

       //FOR TOP TO BOTTOM SELECTION 
       text.setSelection(event.x); 

       int beginPosition = event.x; 
       int beginByte = beginPosition/3; 

       int endPosition = event.y; 
       int endByte = endPosition/3; 

       setSelection(beginByte, endByte); 

      //Mouse Drag Listener here??? - Detects Left 

       //FOR BOTTOM TO TOP SELECTION 
       text.setSelection(event.y); 

       int beginPosition = event.y; 
       int beginByte = beginPosition/3; 

       int endPosition = event.x; 
       int endByte = endPosition/3; 

       setSelection(beginByte, endByte);    

     } 

     @Override 
     public void widgetDefaultSelected(SelectionEvent e) { 
      // Does nothing... 
     } 
    });  

因此,無論我需要鼠標拖動偵聽像我在評論中所指出的,或條件語句比較event.x和event.y

我試圖添加一個拖動檢測監聽器內部的選擇監聽器,但是這會中斷事件座標選擇的格式。

任何幫助將不勝感激。

回答

0

如果事件發生的源小部件是Styled Text對象,那麼這個選擇會自動發生,沒有任何監聽器是正確的,這意味着如果用鼠標拖動拖動,內容將自動選中。