2011-07-29 18 views
3

我正在寫一個小的GUI程序。除了我想要識別鼠標雙擊之外,一切都可行。然而,我根本無法識別鼠標點擊(就像這樣),儘管我可以點擊按鈕並從列表中選擇代碼。如何識別Scala中的鼠標點擊?

下面的代碼是改編自英戈梅爾的 「The scala.swing包」:

import scala.swing._ 
import scala.swing.event._ 

object MouseTest extends SimpleGUIApplication { 
    def top = new MainFrame { 
    listenTo(this.mouse) // value mouse is not a member of scala.swing.MainFrame 
    reactions += { 
     case e: MouseClicked => 
     println("Mouse clicked at " + e.point) 
    } 
    } 
} 

我試過多種變化:鼠標與鼠標,SimpleSwingApplication,從java.awt.event中導入的MouseEvent,等等。錯誤信息已經足夠清楚了 - 在MainFrame中沒有價值的鼠標 - 那麼,它在哪裏呢?幫幫我!

回答

6

也許這樣?

object App extends SimpleSwingApplication { 
    lazy val ui = new Panel { 
    listenTo(mouse.clicks) 
    reactions += { 
     case e: MouseClicked => 
     println("Mouse clicked at " + e.point) 
    } 
    } 
    def top = new MainFrame { 
    contents = ui 
    } 
} 

BTW,SimpleGUIApplication已被棄用

+0

是的,這有效 - 謝謝! –

+2

是的,那可行 - 謝謝! 總結:'鼠標'在組件中定義。面板是一種組件,因此可以在面板中識別鼠標點擊。 MainFrame不是Component的子類(也不是Frame),因此無法直接在MainFrame中識別鼠標點擊;它必須包含一個Panel。 我仍然不清楚爲什麼「MouseClicked('myListView')」的情況是非法的,因爲一個ListView是一個組件,但我可能會雙擊一個ListView元素現在可以工作。 –