2015-07-20 657 views
0

我有一個ScrollPane,當我按下CTRL鍵時,滾動窗格中的事件將被觸發,這裏是我的代碼不起作用(當我按下ctrl鍵什麼都沒有發生它甚至犯規它打破) 這個代碼,我把它放在initialze(URL網址,資源包RB)Javafx ScrollPane監聽鍵盤事件(按下按鍵)

@FXML private ScrollPane m_scrollPane; 

m_scrollPane.setOnKeyPressed(new EventHandler<KeyEvent>() { 

     public void handle(KeyEvent ke) { 

      String text = ke.getCharacter(); 

       if (ke.isControlDown()) { 
       //do something 
        text += " , ctrl down"; 
       } 
      } 
    }); 

回答

0

是您的初始()澤(URL網址,資源包RB)什麼都叫?控制器必須實現Initializable才能調用它。

如果您正在使用JavaFX 2或更高,正確的方法是使用替代註釋初始化()不帶參數(不需要接口則)

@FXML 
void initialize() { 
} 

... FXMLLoader will now automatically call any suitably annotated no-arg initialize() method...

如果仍然無法正常工作,確保窗格具有輸入焦點。

順便說一下,此事件類型中的ke.getCharacter()將返回空字符串。 key.getText()將返回按下的字符,但請注意,此事件類型在任何鍵上觸發,包括Ctrl本身。可能你想使用setOnKeyTyped來代替getCharacter()的作用。