2012-01-11 141 views
4

在SWT中,對接口MouseListener,可用的方法是mouseUp()mouseDown()mouseDoubleClick()在SWT中觸發鼠標事件?

如何開火根據用戶點擊的事件?

我們可以通過mouseUp()mouseDown()一起做,但不存在像SWT mouseClick()方法任何平凡解?

謝謝。

+1

什麼樣的對象?只是一個「複合」? (大部分的本地包裝類型都有SelectionListener來實現這一點,否則鼠標向下和鼠標移動是明確的。「點擊」less so。「 – 2012-01-12 03:41:41

+0

我正在使用GC(GraphicsContext)繪製圖像如何在用戶單擊時觸發事件在圖像上? – nik7 2012-01-12 05:34:41

+0

你寫了「_如何根據用戶點擊來觸發一個事件?_」你是什麼意思? SWT監聽器_listens_用於顯示事件...... – 2012-01-13 07:57:47

回答

1

如何定義鼠標單擊事件?鼠標放下鼠標,然後鼠標不離開控制界限(否則它將是拖動開始),對吧?通過該定義,鼠標點擊事件不能與單個點關聯,而與區域(1)或控件(2)關聯。第一種情況不適合通用的SWT事件,它只有一個位置(x和y),並且您仍然需要額外的代碼來檢查點擊區域是否在圖像內。在第二種情況下,鼠標點擊只能使用控件定義(並且沒有位置),這個事件對你來說是沒用的。

當您已經實現了自己的單擊檢測功能時,您可以在您喜歡的控件上觸發任何事件,即使那些未由SWT定義的事件。

+0

我沒有看到mouseClick()事件無用的上下文。你能有更多的解釋嗎? – nik7 2012-01-12 18:22:34

+0

@ynwa更新了我的答案。這只是理論上的,並不會改變SWT中沒有MouseClick事件的事實:) – 2012-01-13 06:42:35

0

要上一個按鈕,你可以使用SelectionListener中鼠標點擊事件作出反應,這樣的事情應該做的伎倆:

button.addSelectionListener(new SelectionAdapter() { 
     @Override 
     public void widgetSelected(SelectionEvent e) { 
      super.widgetSelected(e); 
      System.out.println("click!"); 
     } 
    });