java - 当在 TextField 内按下回车键时,JavaFX 程序切换全屏
问题描述
每当同时按下两个键盘键 alt 和 enter 时,我都会让我的程序进入全屏状态。这主要按预期工作。
问题是只要按下回车键,我的程序就会切换全屏模式。是否按下 alt 键无关紧要。
我怎样才能使程序在仅按下回车键时不会切换全屏模式。
我正在使用 OpenJFX 11。
package application;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyCodeCombination;
import javafx.scene.input.KeyCombination;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.GridPane;
public class Main extends Application {
final KeyCombination FullScreenKeyCombo =
new KeyCodeCombination(KeyCode.ENTER, KeyCombination.ALT_ANY);
@Override
public void start(Stage stage) {
GridPane grid = new GridPane();
Scene scene = new Scene(grid, 1600, 900);
stage.setScene(scene);
stage.show();
// create TextField and add to GridPane
TextField textField = new TextField();
grid.add(textField, 0, 0);
// toggle full-screen when alt + enter is pressed
scene.addEventHandler(KeyEvent.KEY_PRESSED, event -> {
if(FullScreenKeyCombo.match(event)) {
stage.setFullScreen(!stage.isFullScreen());
}
});
}
public static void main(String[] args) {
launch(args);
}
}
解决方案
在这一行:
new KeyCodeCombination(KeyCode.ENTER, KeyCombination.ALT_ANY);
ALT_ANY 的意思是“我不在乎 Alt 键是否被按下。”</p>
改用ALT_DOWN:
new KeyCodeCombination(KeyCode.ENTER, KeyCombination.ALT_DOWN);
推荐阅读
- javascript - Discord.js 向特定频道发送消息
- javascript - 未捕获的引用错误:仅有时会发生
- dart - 在 Dart 中检测何时将 const 对象传递给对其进行变异的函数
- javascript - 用什么代替推送?
- ios - 当文件名包含不规则字符时创建文档目录文件路径
- javascript - 将 JavaScript Map 值作为数组获取?
- amazon-web-services - 将 ACL 作为资源应用到部署存储桶
- javascript - 将两个数字相除的 JavaScript 函数
- youtube - Youtube 调试信息字段详细信息
- java - 如何在java中解析嵌套的JSON对象