gpt4 book ai didi

java - 如何在 Java 中为同一个按键分配两个 Action ?

转载 作者:行者123 更新时间:2023-11-29 04:12:31 31 4
gpt4 key购买 nike

我正在制作一个 JavaFX 应用程序,我想在按键时分配一些 Action 。我将 keyCode SHIFT 分配给使 AnchorPane 的不透明度为 1.0 的操作,并将 KeyCode SLISH 分配给将相同的 AnchorPane 不透明度设置为 0.0 的操作。

我想重构按键并将所有操作设置在一个键代码 DEAD_TILDE 上。

我想让键盘上的按键充当切换按键。当我按 DEAD_TILDE 键时,AnchorPane 的不透明度应设置为 1.0 如果我再次按相同的 DEAD_TILDE,AnchorPane 的不透明度应设置为 0.0

我该怎么做?

我尝试创建一个 boolean 值并在方法中使用它。但是 id 不起作用或者我只是以错误的方式做了:

@FXML  private AnchorPane mainAnchor, previewCard;

private boolean opacityCard = false;

@FXML
public void initialize(URL location, ResourceBundle resources) {

showCardPreview();
}

private void showCardPreview() {

mainAnchor.addEventFilter(KeyEvent.KEY_PRESSED, event -> {
if (event.getCode() == KeyCode.DEAD_TILDE || !opacityCard) {
opacityCard = false;
previewCard.setOpacity(1.0);

} else if(event.getCode() == KeyCode.DEAD_TILDE || true) {
opacityCard = true;
previewCard.setOpacity(0.0);
}
});
}

这就是我在两个操作上分配两个 keyCodes 的方式:

 @FXML  private AnchorPane mainAnchor, previewCard;

//key commands
mainAnchor.setOnKeyPressed(event -> {
switch (event.getCode()) {

case SHIFT:
previewCard.setOpacity(1.0);
break;

case SLASH:
previewCard.setOpacity(0.0);
break;
}
});
}

编辑:

我试过使用这个,但没有任何反应:

  @FXML
public void initialize(URL location, ResourceBundle resources) {

mainAnchor.setOnKeyPressed(event -> {
if (event.getCode() == KeyCode.DEAD_TILDE) {
previewCard.setOpacity(previewCard.getOpacity() == 0.0 ? 1.0 : 0.0);
event.consume();
}
});

}

编辑 2:

我发现我的代码中有 EventFilter,所以我只是像这样重构它,这很糟糕!我还将 keyCode 更改为 DIGIT4,因为 DEAD_TILDA 标志不起作用

 //assign keys to some events
mainAnchor.addEventFilter(KeyEvent.KEY_PRESSED, event -> {
if (event.getCode() == KeyCode.SPACE) {
event.consume();
flipCard();
} else if (event.getCode() == KeyCode.DIGIT4) {
event.consume();
previewCard.setOpacity(previewCard.getOpacity() == 0.0 ? 1.0 : 0.0);
}
});

最佳答案

在处理程序中,根据当前状态切换状态。换句话说,如果不透明度为 1.0,请将其更改为 0.0,反之亦然。

mainAnchor.setOnKeyPressed(event -> {
if (event.getCode() == KeyCode.DEAD_TILDE) {
previewCard.setOpacity(previewCard.getOpacity() == 0.0 ? 1.0 : 0.0);
event.consume();
}
});

当您在 0.01.0 之间切换时,您可能需要考虑改用 visible 属性。

mainAnchor.setOnKeyPressed(event -> {
if (event.getCode() == KeyCode.DEAD_TILDE) {
previewCard.setVisible(!previewCard.isVisible());
event.consume();
}
});

关于java - 如何在 Java 中为同一个按键分配两个 Action ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54237643/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com