JavaFX:支持不同的分辨率

DfM*_*DfM 2 java javafx

我试图了解如何在JavaFX中支持不同的分辨率。我正在寻找有关如何实现此目标的指南。

我想创建一个应用程序,该应用程序的最低分辨率为1280×720。我希望我的应用程序在任何更高的分辨率(例如1920×1080)下也能正常显示。同样,该应用程序应在不同的DPI值上看起来不错。我怎样才能做到这一点?

让我们将最低要求JDK 11.0.2+和JavaFX 11.0.2+设置为更具体。

我现在(似乎)了解的内容:

  1. 舞台的最小宽度和高度必须设置。
  2. 我不介意DPI支持,因为它似乎已实现

我仍然不明白的是:

  1. 如何设置元素,缩进等的尺寸
    • 是否应该以像素为最小支持分辨率设置值,然后根据当前分辨率乘以系数?
    • 还是应该将尺寸设置为屏幕宽度/高度的百分比?
    • 还是我应该以一种完全不同的方式来做这一切?
  2. 我应该避免任何控件/布局吗?

我希望我足够清楚。

我是为真实而非玩具应用程序创建界面的新手。我将不胜感激,无论是注释,解释,代码示例还是文章链接,都将为您提供帮助。

预先感谢您的帮助。

VGR*_*VGR 6

每个组件(按钮、文本字段等)都会根据分辨率、字体大小、用户选择的主题等计算自己的首选大小。你所要做的就是确保你不会干扰它。所以不要设置任何尺寸。

当您将组件放置在布局(除 AnchorPane 之外的任何 Pane 子类)中时,布局将尽最大努力尊重每个子项的首选大小。在大多数应用程序中,您永远不必明确设置单个宽度或高度。

  • 您也不应该设置舞台或场景的大小。默认情况下,舞台大小设置为场景的大小,场景适应所有节点的首选大小。如果您的标签可能包含长文本,则可以设置其最大大小,但通常长文本放置在 TextField 或 TextArea 中,它们会自动处理长文本。 (2认同)
  • 我怀疑您想要一个 StackPane,其中包含空白节点和常规用户界面。如果没有更多有关您要做什么的信息,我无法肯定地说。 (2认同)

Ahm*_*mad 5

好吧,这是一个很好的问题,因为JavaFX它不支持动态响应式解析,所以您要自己做

  1. 首先尝试依靠不同的布局来根据计算出的位置,宽度和高度分配UI组件,例如,BorderPane其中有5个部分可以轻松设置组件
  2. 完成第一步后,您仍然需要对某些组件进行宽度和高度的自定义修改,设置所需的宽度和高度,然后将这些值乘以一个比率,然后通过获取屏幕分辨率来计算该比率,以便下次使用在具有不同分辨率的不同屏幕上运行该应用,它将为该组件提供不同的宽度或高度
  3. 您还可以为FXML应用程序支持的每种分辨率提供不同的文件,以便您可以运行适当的设计以及横向和纵向案例
  4. 当然,您可以寻找一个第三方库,该库可以提供BootstrapFX类似于Web设计的响应组件,并且也可以提供,ResponsiveFX但我之前没有尝试过

希望我的回答对您有所帮助或使您走上正确的道路,以制作一些很棒的应用程序