Javafx ScrollPane听键盘事件(按键)

时间:2015-07-20 15:14:36

标签: javafx keyboard-events onkeypress scrollpane eventhandler

我有一个ScrollPane,我希望当我按下CTRL键时,滚动窗格中的一个事件将被触发,这是我的代码不起作用(当我按下ctrl键时没有发生任何事情它不会甚至打破它) 这段代码我把它放在initialze(URL url,ResourceBundle rb)

@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";
                }
            }
    });

1 个答案:

答案 0 :(得分:1)

你的初始()ze(URL url,ResourceBundle rb)是否完全被调用? Controller必须实现Initializable才能调用它。

如果您使用的是JavaFX 2或更高版本,那么正确的方法是使用带注释的initialize()而不使用参数(接口不需要接口)

@FXML
void initialize() {
}

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

如果仍然无效,请确保窗格具有输入焦点。

顺便说一句,此事件类型中的ke.getCharacter()将返回空字符串。 key.getText()将返回按下的字符,但请注意,此事件类型会在任何键上触发,包括Ctrl本身。可能你想使用setOnKeyTyped,其中getCharacter()可以工作。

相关问题