GEF — 學習一下調色盤,我們不知道的東西(三)影子武士Tracker

來源:互聯網
上載者:User

在研究GEF的調色盤實現時,發現了以前從沒有用過的一個SWT控制項,可能是因為我很少在程式中處理滑鼠移動等等事件的原因吧。這個好東西就是Tracker,我非常希望能把它稱為影子武士,因為Tracker常常和滑鼠的點擊、移動事件相配合,動態地顯示所操作組件的位置大小的改變,從某種意義上來說Tracker非常像是SWT中的GEF Handle;

下面簡要介紹一下它的基本使用;(插一句,在GEF的調色盤實現中Tracker主要應用在了Sash Drag和調色盤的Dock過程中)

Tracker直接繼承自Widget,和其他的Widget一樣,建構函式需要parent和style,其中parent就是我們需要跟蹤的哪個控制項,在這裡就不贅述了。我之所以稱Tracker為影子武士主要是因為Tracker可以通過一個陰影的方式顯示一個矩形,這可以通過setRectangles方法來實現,有這個方法名稱我們可以看出一個Tracker可以指定多個矩形,說句實話,我不是很明白設定多個矩形的必要在哪裡,至少我現在還沒有碰到。

當然能夠設定矩形還不是最主要的,因為單單設定一個矩形的話,使用者感受並不是很好,因此它還有一個方法:setStippled(boolean)用來指定是不是在Tracker中畫點,這個自己試一試就知道了。一般設定為True比較好看;

此外,以上設定僅僅是基礎參數的設定,那麼Trcker本身是怎麼工作的呢,這就要提到它的另一個方法open,只有調用了它,Tracker才會真正的顯示出來,這個時候滑鼠的移動就會被我們的影子武士表示出來了;

當然,為了更好的表示我們的移動方向,最好還要設定一下Tracker的cursor,方法是:setCursor;

總結一下Tracker的使用:

1、定義滑鼠的點擊、移動事件處理器;

2、定義Tracker為某一個組件的Tracker;

3、定義Tracker的cursor、矩形等等;

4、開啟Tracker,即調用方法open;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.