java - 控制器类中的按钮事件处理程序不起作用
问题描述
你好我有两个问题。
第一个:
当我启动我的应用程序时,我可以按ToggleButton
空格键。
第二个:(
即使没有ToggleButton
)我EventHandler
的按钮不起作用,按空格键没有任何反应。
主类:
public class Main extends Application {
@Override
public void start(Stage stage) throws IOException {
Parent parent = (Parent) FXMLLoader.load(getClass().getResource("/application/MainView.fxml"));
Scene scene = new Scene(parent);
scene.getRoot().setFocusTraversable(true);
stage.setScene(scene);
stage.setTitle("Login Page");
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Fxml 文件:
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="501.0" prefWidth="597.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.MainController">
<children>
<Button fx:id="button" layoutX="136.0" layoutY="184.0" mnemonicParsing="false" prefHeight="133.0" prefWidth="127.0" text="Button" />
<Label fx:id="label" layoutX="199.0" layoutY="106.0" prefHeight="61.0" prefWidth="198.0" text="Label" />
<ToggleButton fx:id="toggleButton" layoutX="318.0" layoutY="186.0" mnemonicParsing="false" prefHeight="133.0" prefWidth="127.0" text="ToggleButton" />
</children>
</AnchorPane>
控制器类:
public class MainController implements Initializable {
@FXML
private Button button;
@FXML
private Label label;
@FXML
private ToggleButton toggleButton;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
button.setDisable(true);
button.addEventFilter(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
if (event.getCode() == KeyCode.SPACE) {
System.out.println("space pressed");
button.setDisable(false);
}
}
});
button.addEventFilter(KeyEvent.KEY_RELEASED, new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
if (event.getCode() == KeyCode.SPACE) {
System.out.println("space pressed");
button.setDisable(true);
}
}
});
}
}
解决方案
起初@c0der提到你还没有被事件处理程序
由于button
已通过禁用,button.setDisabled(true)
因此它无法接收任何事件,例如鼠标和按键事件,请参见 javafx doc
通过一些搜索进行编辑我在stackoverflow中发现了另一个类似的问题
推荐阅读
- variables - 反应式编程是否会回到通过引用传递?
- ffmpeg - 如何在 h.264 视频中寻找特定帧?
- scala - 在 Scala Spark 中的转换之间持久化数据是否有帮助?
- python-3.x - Tensorflow 无法创建 cudnn 句柄:CUDNN_STATUS_ALLOC_FAILED
- python - 错误 Flask 命令“点击”未定义
- java - 如何在 android web 应用程序中启用放大和缩小?
- for-loop - 计算每个部分的数字实例的 AWK 脚本
- javascript - 将 Javascript 对象转换为代理(而不是其引用)
- php - 查找 MySQL 数据库的网址
- java - 如何使用 Stax Iterator 解析 xml 并获取相应的值?