2015-07-20 656 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()的作用。