1

我目前正在开发一个JavaFX应用程序,在那里我使用了ButtonBar一些按钮。当我运行程序时,第一个Button始终是重点。如何禁用该设置?

在此处输入图像描述

PS:我使用了一些CSS代码来更改默认外观,并且那个棕色框表示按钮已聚焦。

4

1 回答 1

1

您可以使用以下命令将焦点从按钮上移开otherNode.requestFocus()

请求该节点获得输入焦点,并且该节点的顶级祖先成为焦点窗口。为了有资格获得焦点,节点必须是场景的一部分,它和它的所有祖先都必须可见,并且不能被禁用。如果此节点符合条件,此函数将使其成为此场景的“焦点所有者”。每个场景最多有一个焦点所有者节点。但是,焦点所有者实际上不会拥有输入焦点,除非场景属于既可见又活跃的 Stage ( docs )。

就像在这个例子中:


import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonBar;
import javafx.stage.Stage;

import java.util.stream.IntStream;

public class App extends Application {

    @Override
    public void start(Stage stage) {
        // Create controls:
        ButtonBar buttonBar = new ButtonBar();
        IntStream.range(0, 3).forEach(i -> buttonBar.getButtons().add(new Button("Button " + i)));
        
        // This takes away the focus from the button:
        Platform.runLater(buttonBar::requestFocus); // (Does not have to be the buttonBar itself)
        
        // Prepare and show stage:
        stage.setScene(new Scene(buttonBar));
        stage.show();
    }

    public static void main(String[] args) {
        launch();
    }
}
于 2021-05-13T08:26:40.207 回答