首页 > 解决方案 > JavaFX 更改字体大小会导致小文本出现几分之一秒

问题描述

我正在制作一个交叉数字益智游戏(带数字的交叉词)。对于实际的拼图本身,我有一个包含堆栈窗格(拼图网格的正方形)的网格窗格。一些堆栈窗格的角落有标签来表示问题的开始,其中一些具有供用户编写答案的文本字段。我为每个堆栈窗格添加了一个侦听器,这样当它的高度发生变化时,它也会更改附加到该堆栈窗格的文本字段的字体大小。这是代码:

      ChangeListener<Number> squareSizeListener = (observable, oldValue, newValue) -> {
            textField.setStyle("-fx-font-size: " + (newValue.intValue() / 4));
      };
      square.heightProperty().addListener(squareSizeListener);

我使用相同的侦听器来更改表​​示问题编号的标签的大小。虽然这可以在我调整窗口大小(以及因此堆栈窗格)时更改文本字段的字体大小和问题编号,但我遇到了一个奇怪的问题,在调整窗口大小时,文本的较小版本将非常短暂地出现而不是文本,然后很快消失。这个较小的文本总是相同的大小和颜色。就好像它在应用新样式之前将文本样式重置为默认值一样。

这是我正在谈论的视频。

我不知道为什么会发生这种情况,我也无法在网上找到任何关于此的信息。我尝试将堆栈窗格更改为不同的容器,但遇到了同样的问题。有人可以帮我弄清楚发生了什么吗?

非常感谢!

PS。如果有人也知道文本字段的轮廓也在消失和重新出现,我将非常感激!


编辑:不知何故,我偶然发现了一个解决方案。我不知道它为什么或如何工作,但确实如此。在使用 setStyle 更改字体后在文本字段/标签上调用 applyCss 方法似乎可以解决问题。

标签: javafxfontsresizesize

解决方案


所以不知何故,我偶然发现了一个解决方案。我不知道它为什么或如何工作,但确实如此。使用 setStyle 更改字体后在文本字段/标签上调用 applyCss 方法似乎可以解决问题。


推荐阅读