我有一个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";
}
}
});
答案 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()可以工作。