gpt4 book ai didi

JavaFX 防止新阶段窃取 PrimaryStage 的焦点

转载 作者:行者123 更新时间:2023-12-02 11:10:37 25 4
gpt4 key购买 nike

有什么办法可以防止新阶段抢走主阶段的焦点吗?

我的意思是每个新的 stage.show(); 都会从我的主舞台上夺走焦点。

我不想将 JavaFX 与 Swing 混合,因此无法选择将内容嵌入到 JFrame 中。另外,如果不使用任何 Popup,只使用纯粹的 Stage,那就太好了。

是否有任何外部库允许我这样做?

最佳答案

您可以将监听器添加到主阶段的 focusedProperty 中,并在失去焦点时请求焦点。

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

public class StageFocus extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
final Button button = new Button("New Stage");
button.setOnAction(e -> {
final Stage stage = new Stage();
stage.setWidth(200);
stage.setHeight(200);
stage.setTitle("New Stage");
stage.show();
});
final Scene scene = new Scene(new StackPane(button), 300, 300);
primaryStage.focusedProperty().addListener((observable, oldValue, newValue) -> {
if (!newValue) {
primaryStage.requestFocus();
}
});
primaryStage.setScene(scene);
primaryStage.show();
}
}

关于JavaFX 防止新阶段窃取 PrimaryStage 的焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50650542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com