在JavaFX中同时按下键 package javafx\u同时按\u键; 导入javafx.application.application; 导入javafx.scene.scene; 导入javafx.scene.input.KeyCode; 导入javafx.scene.input.KeyEvent; 导入javafx.scene.paint.Color; 导入javafx.scene.control.Label; 导入javafx.scene.layout.BorderPane; 导入javafx.scene.text.Font; 导入javafx.stage.stage; 导入javafx.beans.property.BooleanProperty; 导入javafx.beans.property.SimpleBoleAnProperty; 导入javafx.beans.binding.BooleanBinding; 导入javafx.beans.value.ChangeListener; 导入javafx.beans.value.observeValue; 导入javafx.event.EventHandler; 公共类JavaFX_同时按下_键扩展应用程序 { 最终布尔属性ZPressed=新的SimpleBoleAnProperty(false); final BooleanProperty XPressed=新的SimpleBoleAnProperty(false); 最终布尔绑定ZAndXPressed=ZPressed.和(XPressed); int i=0; @凌驾 公众假期开始(阶段) { BorderPane bp=新的BorderPane(); bp.setStyle(“-fx背景色:线性渐变(从25%25%到100%100%,#DC143C,#661A33”); 场景s=新场景(bp,340300); 标签l1=新标签(); l1.setFont(新字体(“Arial”,56)); l1.setTextFill(颜色为CADETBLUE); 设置中心(l1); l1.setText(整数.toString(i)); //如何响应同时按下的两个键(“Z”和“X”)。 ZAndXPressed.addListener(新的ChangeListener() { @凌驾 public void changed(observeValue

在JavaFX中同时按下键 package javafx\u同时按\u键; 导入javafx.application.application; 导入javafx.scene.scene; 导入javafx.scene.input.KeyCode; 导入javafx.scene.input.KeyEvent; 导入javafx.scene.paint.Color; 导入javafx.scene.control.Label; 导入javafx.scene.layout.BorderPane; 导入javafx.scene.text.Font; 导入javafx.stage.stage; 导入javafx.beans.property.BooleanProperty; 导入javafx.beans.property.SimpleBoleAnProperty; 导入javafx.beans.binding.BooleanBinding; 导入javafx.beans.value.ChangeListener; 导入javafx.beans.value.observeValue; 导入javafx.event.EventHandler; 公共类JavaFX_同时按下_键扩展应用程序 { 最终布尔属性ZPressed=新的SimpleBoleAnProperty(false); final BooleanProperty XPressed=新的SimpleBoleAnProperty(false); 最终布尔绑定ZAndXPressed=ZPressed.和(XPressed); int i=0; @凌驾 公众假期开始(阶段) { BorderPane bp=新的BorderPane(); bp.setStyle(“-fx背景色:线性渐变(从25%25%到100%100%,#DC143C,#661A33”); 场景s=新场景(bp,340300); 标签l1=新标签(); l1.setFont(新字体(“Arial”,56)); l1.setTextFill(颜色为CADETBLUE); 设置中心(l1); l1.setText(整数.toString(i)); //如何响应同时按下的两个键(“Z”和“X”)。 ZAndXPressed.addListener(新的ChangeListener() { @凌驾 public void changed(observeValue,java,javafx,Java,Javafx,ChangeListener只知道它的对象的状态发生了变化。它不知道它的对象是如何变化的或发生了什么事情。现在的逻辑是在每次ZAndXPressed发生变化时递增,无论是从真变假,还是从假变真 试试这个: package javafx_pressing_simultaneous_keys; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.input.KeyCode; im

ChangeListener只知道它的对象的状态发生了变化。它不知道它的对象是如何变化的或发生了什么事情。现在的逻辑是在每次ZAndXPressed发生变化时递增,无论是从真变假,还是从假变真

试试这个:

package javafx_pressing_simultaneous_keys;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.paint.Color;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.scene.text.Font;
import javafx.stage.Stage;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.binding.BooleanBinding;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.EventHandler;

public class JavaFX_Pressing_Simultaneous_Keys extends Application
{
  final BooleanProperty ZPressed = new SimpleBooleanProperty(false);
  final BooleanProperty XPressed = new SimpleBooleanProperty(false);
  final BooleanBinding ZAndXPressed = ZPressed.and(XPressed);
  int i = 0;

  @Override
  public void start(Stage stage)
  {
    BorderPane bp = new BorderPane();
    bp.setStyle("-fx-background-color: linear-gradient(from 25% 25% to 100% 100%, #DC143C, #661A33)");
    Scene s = new Scene(bp, 340, 300);

    Label l1 = new Label();
    l1.setFont(new Font("Arial", 56));
    l1.setTextFill(Color.CADETBLUE);
    bp.setCenter(l1);
    l1.setText(Integer.toString(i));

    // How to Respond to both Keys ("Z" and "X") pressed together.
    ZAndXPressed.addListener(new ChangeListener<Boolean>()
    {
      @Override
      public void changed(ObservableValue<? extends Boolean> obs, Boolean werePressed, Boolean arePressed)
      {
        i++;
        l1.setText(Integer.toString(i));
      }
    });

    s.setOnKeyPressed(new EventHandler<KeyEvent>()
    {
      @Override
      public void handle(KeyEvent ke)
      {
        if (ke.getCode() == KeyCode.Z)
          ZPressed.set(true);
        else
          if (ke.getCode() == KeyCode.X)
            XPressed.set(true);
      }
    });

    s.setOnKeyReleased(new EventHandler<KeyEvent>()
    {
      @Override
      public void handle(KeyEvent ke)
      {
        if (ke.getCode() == KeyCode.Z)
          ZPressed.set(false);
        else
          if (ke.getCode() == KeyCode.X)
            XPressed.set(false);
      }
    });

    stage.setScene(s);
    stage.setTitle("JavaFX (Pressing Simultaneous Keys)");
    stage.setResizable(false);
    stage.show();
  }


  public static void main(String[] args)
  {
    launch(args);
  }
}
//如何响应同时按下的两个键(“Z”和“X”)。
ZAndXPressed.addListener(新的ChangeListener()
{
@凌驾

公共无效已更改(很高兴我能提供帮助。编码愉快!
// How to Respond to both Keys ("Z" and "X") pressed together.
ZAndXPressed.addListener(new ChangeListener<Boolean>()
{
  @Override
  public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue)
  {
    if (newValue == true)
    {
        i++;
        l1.setText(Integer.toString(i));
    }
  }
});