键 SPACE 就像聚焦按钮
Key SPACE acts like focused button
每当按下 SPACE 键时,它都会被注册并处理为最后一次按下(聚焦)的按钮。我无法将其捕获为 KeyEvent,它充当按钮。
我想从按下的按钮和键盘键生成并传递字符。
这是我在控制器中的代码的处理程序部分 class:
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 充当按钮。
我在主 class 的舞台上添加了一个 eventFilter,它起作用了
addEventFilter(KeyEvent.KEY_PRESSED, k -> {
if ( k.getCode() == KeyCode.SPACE){
k.consume();
}
});
每当按下 SPACE 键时,它都会被注册并处理为最后一次按下(聚焦)的按钮。我无法将其捕获为 KeyEvent,它充当按钮。
我想从按下的按钮和键盘键生成并传递字符。
这是我在控制器中的代码的处理程序部分 class:
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 充当按钮。
我在主 class 的舞台上添加了一个 eventFilter,它起作用了
addEventFilter(KeyEvent.KEY_PRESSED, k -> {
if ( k.getCode() == KeyCode.SPACE){
k.consume();
}
});