JavaFX 将按钮(图标 HELP)添加到标题 Stage

JavaFX add button (icon HELP) to the title Stage

提问人:Алексей Жуков 提问时间:11/15/2023 更新时间:11/15/2023 访问量:46

问:

请告诉我,如何使用 JavaFX 将按钮 HELP 添加到标题 Stage 中。 我使用的是Linux。

enter image description here

爪哇 JavaFX

评论

3赞 jewelsea 11/15/2023
您无法使用标准 JavaFX API 定制修饰窗口的标题栏。
1赞 Slaw 11/16/2023
如果你愿意投入工作并尝试访问原生代码,那么可以通过 JNI 或 JNA(甚至可能是目前正在孵化的 Foreign Function and Memory API)来做到这一点。这个问答似乎至少显示了在Windows上自定义标题栏的开始。
0赞 jewelsea 11/16/2023
您可以创建另一个未修饰的舞台,并监听舞台 x 和 y 以及 width 属性,设置未修饰舞台的 x 和 y(使未修饰的舞台成为非模态舞台并由主舞台拥有)。它可能会起作用(我没有尝试过),这是一个笨拙的解决方案,如果操作系统默认的装饰布局不完全符合您的预期,它将无法正常工作(该布局将根据操作系统版本或使用的 Linux 窗口管理器主题而变化)。
0赞 jewelsea 11/16/2023
我的建议是放弃在标题栏中放置帮助图标的想法。取而代之的是,将帮助图标放在主窗口中(查看 StackOverflow 窗口,看看帮助问号在右上角的位置 - 类似)。
1赞 Алексей Жуков 11/16/2023
多谢。可惜没有标准工具

答:

1赞 David Weber 11/15/2023 #1

前言:

您无法在 JavaFX 中修改 Stages 的标题栏。

解决方法:

构建您自己的标题栏,将其添加到场景顶部,然后删除原始标题栏。

  1. 用作 .BorderPaneScene
  2. 在 .BorderPane
  3. 使用 删除原始标题栏。Stagestage.initStyle(StageStyle.UNDECORATED);

评论

3赞 VGR 11/15/2023
当然,这比这更难一点。(顺便说一句,我假设你指的是 BorderPane,而不是 BorderLayout。模拟菜单栏需要添加应用程序图标、标题(使用平台的标题栏字体)和最小化/最大化/关闭按钮(理想情况下使用平台自己的图标)。并根据窗口是否聚焦来更改外观。并支持窗口拖拽、标题栏双击、模拟系统对窗口标题栏的右键菜单。一切都可行,但不是微不足道的努力。
1赞 David Weber 11/15/2023
谢谢你,因为 Layout!=Pane!是的,你是对的。一切都必须手工制作。关闭、最大化、最小化并不难,但拖动需要一些努力。
2赞 trashgod 11/16/2023
另请参阅 JavaFX 完全自定义的窗口?