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

JavaFX 可防止新阶段从 primaryStage 窃取焦点

赵智勇
2023-03-14

有什么方法可以防止新舞台抢走主舞台的焦点?

我指的是每个新的<代码>阶段。show() 从我的主舞台上偷走了焦点。

我不想把我的JavaFX和Swing混在一起,所以没有将内容嵌入JFrame的选项。此外,这将是伟大的不使用任何弹出,只是纯粹的阶段。

有什么外部库允许我这么做吗?

共有1个答案

冯奇思
2023-03-14

您可以将侦听器添加到主阶段的Focus usedProperty,并在它失去焦点时请求焦点。

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有一个问题,当我弹出一个新阶段时,该新窗口将从具有当前焦点的任何Windows应用程序中获取焦点 我希望它弹出到前面,但不对焦,所以如果用户在其他地方打字,他们可以继续打字等。 在Swing中,您可以通过以下方式解决此问题: JavaFx中似乎没有类似的选项。 下面的例子,当你点击按钮时,它将弹出一个新的阶段,获得焦点(注意,我不想要求焦点回来,因为在真正的应用程序中,当弹出发生时,用

  • 问题内容: 还有其他人注意到他们在OSX中的命令行Java应用程序创建了窃取焦点的GUI进程(即groovy,maven子进程)吗?我觉得这很烦人。也许b / c自从我认为OSX v10.6以来已经使用了6-8个月了? 如何防止Java进程在OSX中执行此操作? 问题答案: 最终,我找到了基本的解决方案: 通常,对于Java应用程序,可以通过将选项添加到Java应用程序中来指定它们是“无头的” 。

  • 当我将RecycerView放入嵌套的scrollview中时,屏幕总是跳到RecycerView的顶部,而不是页面的顶部。这里有一个简单的例子。 在这个示例中,我在Recyview上有一个350dp高的空视图,因为您需要在Recyview上有一些内容才能明显显示出来。Recyview iteself包含100个虚拟文本视图。 启动活动后,滚动位于Recyview的顶部,而不是页面的顶部。这一定是

  • 我想在javafx中从CLI控制台创建尽可能多的阶段,所有这些阶段都是相互独立的。我知道只能有一个应用程序实例,这就是为什么我这样做: 我在屏幕上只看到,并且没有调用SomeStage的构造函数。

  • 问题内容: 当我使用WebEngine创建播放YouTube视频的新舞台时,关闭它之后-Youtube继续在backgroung上播放。如果我使用“ Platform.exit”-它会关闭我的所有JavaFX App,但我只想关闭为YouTube创建的阶段。 这是我针对YouTube播放器的课程: 在“主舞台”中单击按钮后,我的YouTube播放器舞台正在创建: 问题答案: 您无法处置WebEng

  • 这是我的项目结构: 我在这里做错了什么?或者eclipse在这里期待着NetBeans没有的东西?!?