0

编辑:

在使用选项进行一些测试后,事实证明,当 call:stage.initStyle(StageStyle.UNDECORATED)在舞台上它解决了窗口不显示的问题,但随后窗口没有控件。这意味着它可能与窗口管理器和控件有关。

原来的:

我正在使用 FXML 加载器从 FXML 文件加载场景来启动 JavaFX 阶段。

这是一个相当奇怪的问题,因为没有显示异常或其他形式的错误。现在只有窗口的一部分被渲染,如下所示: 这里是错误渲染的窗口

这里以正确的形式作为参考(不包括左侧 ListView 中的两个条目): 在此处输入图像描述

由于我没有收到任何错误,我只能添加可能有助于解决问题的信息。

-Dprism.verbose=true输出:

[12.12.2018 19:50:48 | MSG] Using Double Precision Marlin Rasterizer
[12.12.2018 19:50:48 | MSG] Using dirty region optimizations
[12.12.2018 19:50:48 | MSG] Not using texture mask for primitives
Not f[12.12.2018 19:50:48 | MSG] orcing power of 2 sizes for textures
[12.12.2018 19:50:48 | MSG] Using hardware CLAMP_TO_ZERO mode
[12.12.2018 19:50:48 | MSG] Opting in for HiDPI pixel scaling
[12.12.2018 19:50:48 | MSG] Prism pipeline name = com.sun.prism.es2.ES2Pipeline
[12.12.2018 19:50:48 | MSG] Loading ES2 native library ... prism_es2
[12.12.2018 19:50:48 | MSG]     succeeded.
[12.12.2018 19:50:48 | MSG] GLFactory using com.sun.prism.es2.X11GLFactory
[12.12.2018 19:50:49 | MSG] (X) Got class = class com.sun.prism.es2.ES2Pipeline
[12.12.2018 19:50:49 | MSG] Initialized prism pipeline: com.sun.prism.es2.ES2Pipeline
[12.12.2018 19:50:49 | MSG] Maximum supported texture size: 32768
[12.12.2018 19:50:49 | MSG] Maximum texture size clamped to 4096
[12.12.2018 19:50:49 | MSG] Non power of two texture support = true
[12.12.2018 19:50:49 | MSG] Maximum number of vertex attributes = 16
[12.12.2018 19:50:49 | MSG] Maximum number of uniform vertex components = 4096
[12.12.2018 19:50:49 | MSG] Maximum number of uniform fragment components = 4096
[12.12.2018 19:50:49 | MSG] Maximum number of varying components = 124
[12.12.2018 19:50:49 | MSG] Maximum number of texture units usable in a vertex shader = 32
[12.12.2018 19:50:49 | MSG] Maximum number of texture units usable in a fragment shader = 32
[12.12.2018 19:50:49 | MSG] Graphics Vendor: NVIDIA Corporation
[12.12.2018 19:50:49 | MSG]        Renderer: GeForce GTX 1060 6GB/PCIe/SSE2
[12.12.2018 19:50:49 | MSG]         Version: 4.6.0 NVIDIA 390.77
[12.12.2018 19:50:49 | ERROR]  vsync: true vpipe: true
[12.12.2018 19:50:49 | MSG] file:/home/liz3/IdeaProjects/SkIDE/out/production/resources/images/icon.png
[12.12.2018 19:50:50 | MSG] ES2ResourceFactory: Prism - createStockShader: Solid_TextureRGB.frag
[12.12.2018 19:50:50 | MSG] ES2ResourceFactory: Prism - createStockShader: Solid_TextureFirstPassLCD.frag
[12.12.2018 19:50:50 | MSG] ES2ResourceFactory: Prism - 
createStockShader: Solid_TextureSecondPassLCD.frag
[12.12.2018 19:50:50 | MSG] new alphas with length = 4096
[12.12.2018 19:50:50 | MSG] ES2ResourceFactory: Prism - createStockShader: Texture_Color.frag
[12.12.2018 19:50:50 | MSG] ES2ResourceFactory: Prism - createStockShader: Texture_LinearGradient_PAD.frag
[12.12.2018 19:50:50 | MSG] PPSRenderer: scenario.effect - createShader: Blend_MULTIPLY
[12.12.2018 19:50:51 | MSG] ES2ResourceFactory: Prism - createStockShader: FillPgram_Color.frag
[12.12.2018 19:50:51 | MSG] new alphas with length = 344064
[12.12.2018 19:51:04 | MSG] QuantumRenderer: shutdown

JDK:

java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

在 OpenJFX 版本上测试:

  1. 12个+4
  2. 12个+2
  3. 11.0.1

操作系统:elementary OS 5.0 Juno (Ubuntu 18.04 LTS) 图形驱动程序:nvidia-390

中央处理器:I7 8700K 图形处理器:GTX 1060 6GB

我在 4k 屏幕上对其进行了测试,尽管我确实将分辨率更改为 1920x1800 并得到了相同的结果。

我可以补充一点,在使用多个 FXML 文件作为源文件或只是一个警报进行测试后,呈现的尺寸接缝始终相同

有关解决此问题的方法的任何想法?

问候, Liz3

4

1 回答 1

0

经过大量测试,结果发现它与 Gtk 版本有关。使用的 OpenJFX 版本访问 Gtk 3 并因此创建了该错误,可以通过调用来解决:stage.initStyle(StageStyle.UNDECORATED).

要真正修复错误,必须添加 JVM Option:-Djdk.gtk.version=2这完全解决了问题。

我将对来源进行更多研究并在此处添加详细信息。

问候, Liz3

于 2018-12-13T04:58:17.390 回答