标签在顶部绘制时,ProgressBar帧速率下降

时间:2018-11-29 04:23:27

标签: scala javafx scalafx

我通常不会在这里寻求帮助,但是我很困惑-这个错误是我很长时间以来见过的最奇怪的事情。

https://gfycat.com/FluidFrigidEastsiberianlaika

我有一个名为GhostProgressBar的简单UI对象,该对象扩展了ScalaFX.StackPane并为其赋予了两个子对象-ProgressBarLabel。在将它添加到其他一些UI屏幕后,我注意到我的帧速率骤然下降,以至于UI难以使用。

此代码非常简单:

import scalafx.geometry.Pos
import scalafx.scene.control.{Label, ProgressBar}
import scalafx.scene.layout.StackPane

class GhostProgressBar extends StackPane {

  alignment = Pos.Center

  val bar = new ProgressBar() {
    prefWidth = Integer.MAX_VALUE
  }
  val text = new Label() {
    id = "ProgressBarText"
    text = "PERFORMANCE TESTING"
  }

  children = List(bar, text)
}

在GIF中,我正在VBox内使用它,它是常规center的{​​{1}}元素-没什么奇怪或非典型的。

从我观察到的行为来看,我认为这是在BorderPane栏上绘制文本的问题。刚才我做了一些调试,我怀疑它与文本样式有关。

这是GIF文本中的样式。

ProgressBar

当我删除该样式时,当栏碰到文本时,帧率不会降低。

我不知道为什么为什么发生了?任何人有任何想法吗?我不知道它是Scala还是ScalaFX,是否可以在JavaFX上下文中用相同的东西重现。

我们将不胜感激。

编辑:有人要求我提供版本,然后我们开始:

  • Scala版本:2.12.7
  • ScalaFX版本:8.0.102-R11
  • JDK版本:1.8.0_181
  • JavaFX版本:未知,我不熟悉ScalaFX的内部结构,并且我没有直接使用JavaFX。

编辑2:我被要求尝试相同的屏幕元素,但是使用JavaFX元素而不是ScalaFX元素。这是我使用的代码,结果是相同的-每当轮廓文本超过进度条时,帧速率就会下降。

#ProgressBarText {
    -fx-text-fill: #dddddd;
    -fx-font-weight: bold;
}
#ProgressBarText .text {
    -fx-stroke: #333333;
    -fx-stroke-width: 1px;
    -fx-stroke-type: outside;
}

我找不到在这里使用的JavaFX版本; IntelliJ奇怪地不考虑不告诉我。我也无法在我的外部库列表中找到它。

0 个答案:

没有答案