如何在javafx中结合Ctrl+;P+;X table.setOnKeyPressed(新的EventHandler(){ //final KeyCombination kb=新的keycodecompbination(KeyCode.P,KeyCombination.CONTROL\u DOWN); //最终密钥组合k=新密钥编码组合 公共无效句柄(KeyEvent密钥){ if(key.getCode()==KeyCode.P&&key.isControlDown()){ //我的代码 } } });
我想用Ctrl+p+X的快捷键组合来调用该事件。实际上,要理解Ctrl+p+X的含义有点困难。我假设这意味着你按ctrl键,然后按p键,然后按x键(可能在按x键之前释放p键)。我还假设顺序很重要,例如,按ctrl键,然后按x键,然后按p键不算。无论如何,我有一点猜测,也许不完全是你想要的,但希望你能得到提供的解决方案的要点,并能够适应你的情况 该解决方案监控按键和释放,以便跟踪按键的状态以确定是否触发按键组合如何在javafx中结合Ctrl+;P+;X table.setOnKeyPressed(新的EventHandler(){ //final KeyCombination kb=新的keycodecompbination(KeyCode.P,KeyCombination.CONTROL\u DOWN); //最终密钥组合k=新密钥编码组合 公共无效句柄(KeyEvent密钥){ if(key.getCode()==KeyCode.P&&key.isControlDown()){ //我的代码 } } });,javafx,Javafx,我想用Ctrl+p+X的快捷键组合来调用该事件。实际上,要理解Ctrl+p+X的含义有点困难。我假设这意味着你按ctrl键,然后按p键,然后按x键(可能在按x键之前释放p键)。我还假设顺序很重要,例如,按ctrl键,然后按x键,然后按p键不算。无论如何,我有一点猜测,也许不完全是你想要的,但希望你能得到提供的解决方案的要点,并能够适应你的情况 该解决方案监控按键和释放,以便跟踪按键的状态以确定是否触发按键组合 table.setOnKeyPressed(new EventHandler<K
table.setOnKeyPressed(new EventHandler<KeyEvent>() {
// final KeyCombination kb = new KeyCodeCombination(KeyCode.P, KeyCombination.CONTROL_DOWN);
// final KeyCombination k = new KeyCodeCombina
public void handle(KeyEvent key) {
if (key.getCode() == KeyCode.P && key.isControlDown()) {
//My Code
}
}
});
如果可以,我建议您尝试使用更简单的控制方案,例如只使用Ctrl+p或Ctrl+X(这直接由键代码组合事件匹配支持),而不是使用Ctrl+p+X的复合控制方案。谢谢。但这不是我想要的。我尝试同时按下这些键,即按Ctrl+Alt+del的方式进行事件。但是我不想使用Alt修饰符,而是希望按下P。按P+Ctrl+X的顺序按下时,它也能工作吗?(与Alt+Ctrl+Del的工作方式相同)我相信您可以调整解决方案以获得您想要的结果。
import javafx.application.Application;
import javafx.beans.property.*;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.input.*;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import java.time.LocalTime;
public class KeyCombo extends Application {
KeyCombination ctrlP = KeyCodeCombination.keyCombination("Ctrl+P");
KeyCombination ctrlX = KeyCodeCombination.keyCombination("Ctrl+X");
@Override
public void start(Stage stage) throws Exception {
Label lastPressedLabel = new Label();
TextField textField = new TextField();
BooleanProperty pDown = new SimpleBooleanProperty(false);
textField.setOnKeyPressed(event -> {
if (ctrlP.match(event)) {
pDown.set(true);
}
if (pDown.get() && ctrlX.match(event)) {
pDown.set(false);
lastPressedLabel.setText(
LocalTime.now().toString()
);
}
});
textField.setOnKeyReleased(event -> {
if (!event.isControlDown()) {
pDown.set(false);
}
});
VBox layout = new VBox(10,
new Label("Press Ctrl+P+X"),
textField,
lastPressedLabel
);
layout.setPadding(new Insets(10));
Scene scene = new Scene(layout);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}