Key SPACE就像聚焦按钮一样

时间:2016-05-29 13:48:48

标签: java javafx keyevent

每当按下SPACE键,它就会被注册并作为最后按下(聚焦)按钮处理。我无法将其捕获为KeyEvent,并且它充当按钮。

我想从按下的按钮和键盘键生成并传递char。

以下是我在控制器类中的代码的处理程序部分:

public void handleKeys(KeyEvent key) {
    char chr = key.getText().charAt(0);
    handleSymbols(chr);
    key.consume();
}

public void handleBtns(ActionEvent buttonPressed) {
    char chr = buttonPressed.getSource().toString().toLowerCase().charAt(buttonPressed.getSource().toString().length() - 2);
    handleSymbols(chr);
    buttonPressed.consume();
}

这是FXML文件的开头:

 <?xml version="1.0" encoding="UTF-8"?>

 <?import javafx.geometry.*?>
 <?import javafx.scene.control.*?>
 <?import javafx.scene.layout.*?>

 <BorderPane fx:id="container" prefHeight="500.0" prefWidth="400.0" style="-fx-background-color: #00e600"
        stylesheets="/sample/main.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
        fx:controller="sample.Controller"
        onKeyPressed="#handleKeys">

<left>
    <VBox prefHeight="300.0" prefWidth="50.0">
        <BorderPane.margin>
            <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
        </BorderPane.margin>

            <Button onAction="#handleBtns" prefHeight="135.0" prefWidth="50" text="+">
                <VBox.margin>
                    <Insets bottom="20.0" />
                </VBox.margin>
            </Button>
            <Button onAction="#handleBtns" prefHeight="135.0" prefWidth="50" text="-" />

    </VBox>
</left>

此处有类似内容,但对于SWING,它不起作用:Disabling space bar triggering click for JButton

如何解除SPACE作为聚焦按钮的默认键?我只是不希望SPACE充当按钮。

1 个答案:

答案 0 :(得分:2)

我在主类的舞台上添加了一个eventFilter,它可以正常工作

addEventFilter(KeyEvent.KEY_PRESSED, k -> {
        if ( k.getCode() == KeyCode.SPACE){
            k.consume();
        }
    });