当前位置: 首页 > 知识库问答 >
问题:

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

陶星渊
2023-03-14

如何在同一个字母中设置助记符解析。在我的项目中,在button中设置助记符,但button<code>setText</code>在每个事件操作中都会发生变化,但在<code>_o</code>中助记符是相同的,但短键只在一个事件中起作用。如何解决这个问题

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);
    }

}

抱歉,我的< code >英语

共有1个答案

丌官浩旷
2023-03-14

您需要在文本更改之前关闭助记符解析,并在更改后再次将其打开。方法 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);
  }
}
 类似资料:
  • 问题内容: 我正在尝试使用以下代码设置按钮文本: 这是我的FXML: 但这行不通,我不明白为什么,还有其他人知道如何使用JavaFX设置按钮文本吗?>。>; 我觉得JavaFX不像Swing那样简单…但是无论如何,有人知道我在做什么错吗?另外,有没有人知道有什么资源可以学习FXML?我喜欢FXML而不是用Java进行编码,但是似乎没有太多的东西,我是否是世界上唯一喜欢FXML而不是JavaFX G

  • 对于我的JavaFX GUI,我必须使用一些拆分窗格。但是出现了一个问题:我必须使用户单击拆分窗格上的按钮时,此拆分窗格会隐藏其中一个侧面窗格,并且需要再单击一次才能将此侧窗格重置为可见。 我在这里发现了另一个和我一样的问题:我们能否在Javafx SplitPane上添加一个OneTouchExpansable按钮,比如swing JSplitPane,但这个按钮很老,除了“不,你不能”之外没有

  • 新用户:从一月份开始学习Java,现在我正在使用NetBeans,如果我写这个简单的快捷方式,我会得到大量的错误。 所以IDE只是告诉我,我几乎做错了一切。在setOnKeyPressed的线路上,我得到了 我导入了所有内容,并从StackOverflow.com上的另一个问题(可能是有效的)中复制了这段代码。我只想按“esc”,并在root被聚焦的情况下关闭我的primarystage(不管是不

  • 在我的活动中,我有一个listview和一个按钮。每一个都有各自的目的。 我的listview显示另一个活动中的项目详细信息。 问题是如何在相同的活动中为按钮实现onClickListener?

  • 问题内容: 我将按钮放在带有GridLayout的JPane中。然后,我使用BoxLayout.Y_AXIS将JPanel放入另一个JPanel中。我希望GridLayout中的按钮为正方形。我使用tmp.setSize(30,30),它不起作用。我也尝试使用,但我不知道X和Y是什么。那么,做这些东西的正确方法是什么? 添加: 我仍然无法解决问题。这是我正在尝试执行的代码: 问题是Java试图使宽