JavaFX:如何实现“没有默认的焦点按钮”

时间:2019-02-13 23:47:50

标签: java button javafx

我是JavaFX的新手,我正在将我的第一个应用程序变成一个简单的子手游戏,因为这是我之前在摇摆中所做的。

在游戏中,我已经构造了一个键盘,但是我不知道在游戏开始时如何使所有按钮都“不集中”,所以看起来像这样

enter image description here

注意“ Q”如何变暗。我考虑过使用jankey方法,就像在场景外设置一个按钮,除了充当默认的焦点按钮外什么也不做,但是我真的很想知道执行此操作的正确方法。我所有的研究都只讲了如何使特定按钮聚焦。

非常感谢愿意帮助的人。

2 个答案:

答案 0 :(得分:1)

您有正确的想法。创建一个屏幕外按钮,并确保它具有开始焦点。

答案 1 :(得分:1)

我认为@Sedrick提到的是正确的。默认情况下,您可以只关注任何布局节点。

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.ToggleButton;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class DefaultFocusDemo extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {
        VBox root = new VBox();
        root.setAlignment(Pos.CENTER);
        root.setSpacing(20);
        Scene sc = new Scene(root, 500, 500);
        primaryStage.setScene(sc);
        primaryStage.show();


        ToggleButton btn1 = new ToggleButton("Button 1");
        ToggleButton btn2 = new ToggleButton("Button 2");
        ToggleButton btn3 = new ToggleButton("Button 3");
        ToggleButton btn4 = new ToggleButton("Button 4");

        HBox hb1 = new HBox();
        hb1.setAlignment(Pos.CENTER);
        hb1.getChildren().addAll(btn1, btn2);

        HBox hb2 = new HBox();
        hb2.setAlignment(Pos.CENTER);
        hb2.getChildren().addAll(btn3, btn4);

        root.getChildren().addAll(hb1, hb2);

        hb1.requestFocus();
    }
}