如何在javafx中为按钮设置快捷键

如何在javafx中为按钮设置快捷键,javafx,javafx-2,javafx-8,Javafx,Javafx 2,Javafx 8,如何在同一个字母中设置助记符解析。在我的项目中,在按钮中设置助记符,但按钮setText在每个事件操作中都会更改,但助记符在\u o中是相同的,但短键只处理一个事件。如何解决此问题 import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.Scene; import javafx.scene.contro

如何在同一个字母中设置助记符解析。在我的项目中,在按钮中设置助记符,但按钮
setText
在每个事件操作中都会更改,但助记符在
\u o
中是相同的,但短键只处理一个事件。如何解决此问题

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

/**
 *
 * @author user
 */
public class JavaFXApplication4 extends Application {
    boolean b = false;
    @Override
    public void start(Stage primaryStage) {

    Button btn = new Button();
    btn.setText("Hell_o");
    btn.setOnAction(new EventHandler<ActionEvent>() {

        @Override
        public void handle(ActionEvent event) {
           b = !b;
           if(!b){
              btn.setText("Hell_o");
               System.out.println("Hello");
           } else {
               btn.setText("w_orld");
               System.out.println("world");
           }
        }
    });

    StackPane root = new StackPane();
    root.getChildren().add(btn);

    Scene scene = new Scene(root, 300, 250);

    primaryStage.setTitle("Hello World!");
    primaryStage.setScene(scene);
    primaryStage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
    launch(args);
    }

}
导入javafx.application.application;
导入javafx.event.ActionEvent;
导入javafx.event.EventHandler;
导入javafx.scene.scene;
导入javafx.scene.control.Button;
导入javafx.scene.layout.StackPane;
导入javafx.stage.stage;
/**
*
*@author用户
*/
公共类JavaFXApplication4扩展了应用程序{
布尔b=假;
@凌驾
公共无效开始(阶段primaryStage){
按钮btn=新按钮();
btn.setText(“地狱”);
btn.setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent事件){
b=!b;
如果(!b){
btn.setText(“地狱”);
System.out.println(“你好”);
}否则{
btn.setText(“世界银行”);
System.out.println(“世界”);
}
}
});
StackPane root=新的StackPane();
root.getChildren().add(btn);
场景=新场景(根,300,250);
setTitle(“你好,世界!”);
初级阶段。场景(场景);
primaryStage.show();
}
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args){
发射(args);
}
}

对不起,我的
英语

您需要在文本更改之前关闭助记符解析,更改之后再次打开。方法setText()未实现任何助记符刷新,因此似乎所有操作都在场景中完成

public class JavaFXApplication4 extends Application {

  boolean b = false;

  @Override
  public void start(Stage primaryStage) {

    Button btn = new Button();
    btn.setMnemonicParsing(true);
    btn.setText("Hell_o");
    btn.setOnAction(new EventHandler<ActionEvent>() {

      @Override
      public void handle(ActionEvent event) {
        b = !b;
        btn.setMnemonicParsing(false);
        if (!b) {
          btn.setText("Hell_o");
          System.out.println("Hello");
        } else {
          btn.setText("W_orld");
          System.out.println("World");
        }
        btn.setMnemonicParsing(true);
      }
    });

    StackPane root = new StackPane();
    root.getChildren().add(btn);

    Scene scene = new Scene(root, 300, 250);

    primaryStage.setTitle("Hello World!");
    primaryStage.setScene(scene);
    primaryStage.show();
  }

  /**
   * @param args the command line arguments
   */
  public static void main(String[] args) {
    launch(args);
  }
}
公共类JavaFXApplication4扩展应用程序{
布尔b=假;
@凌驾
公共无效开始(阶段primaryStage){
按钮btn=新按钮();
btn.setMnemonicParsing(true);
btn.setText(“地狱”);
btn.setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent事件){
b=!b;
btn.setMnemonicParsing(false);
如果(!b){
btn.setText(“地狱”);
System.out.println(“你好”);
}否则{
btn.setText(“世界银行”);
System.out.println(“世界”);
}
btn.setMnemonicParsing(true);
}
});
StackPane root=新的StackPane();
root.getChildren().add(btn);
场景=新场景(根,300,250);
setTitle(“你好,世界!”);
初级阶段。场景(场景);
primaryStage.show();
}
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args){
发射(args);
}
}

你的确切意思是什么?