2009-06-02 9 views
6

Tôi đang cố gắng bắt chuột ngay cả trên Table (điều này sẽ khiến cửa sổ bật lên hiển thị). Bảng nằm bên trong một số ScrollPane là (lần lượt) bên trong một Panel. Tôi đã thêm phản ứng cho tất cả các lớp học, nhưng tôi không bao giờ có thể thực sự có được một sự kiện nhấp chuột để bị bắt!Khung sự kiện Scala Swing - nơi tôi thêm lò phản ứng của mình?

class MyPanel extends GridBagPanel { 
    val gbc = new GridBagContraints(...) 

    add(new ScrollPane { 
    reactions += { 
     case MouseClicked(src, point, mod, clicks, pops) => 
     println("Scroll pops: " + pops) 
    } 

    viewportView = new Table { 
     reactions += { 
     case MouseClicked(src, point, mod, clicks, pops) => 
      println("Table pops: " + pops) 
     } 

     ... 
    } 

    }, gbc) 

    reactions += { 
    case MouseClicked(src, point, mod, clicks, pops) => 
     println("Panel pops: " + pops) 
    } 
} 

Bất kể tôi nhấp vào đâu, không có nội dung nào được in. Tôi đang làm gì sai?

Trả lời

5

OK - Bạn phải nghe để điều đúng:

class MyPanel extends GridBagPanel { 
    val gbc = new GridBagContraints(...) 

    val table = new Table { ... } 

    add(new ScrollPane { 

    viewportView = table 
    } 

    }, gbc) 

    listenTo(table.Mouse.clicks) //THIS LINE IS IMPORTANT :-) 

    reactions += { 
    case MouseClicked(`table`, point, mod, clicks, pops) => 
     println("Panel pops: " + pops) 
    } 
    } 
}