与Text元素的大小有关的奇怪JavaFX行为

时间:2018-09-20 11:25:34

标签: java javafx text

我编写的某些代码存在问题,我认为这只是我的逻辑错误。但是,我将问题归结为以下内容,并且不了解发生了什么事情:

使用此类

public class Why extends Application
{
    @Override
    public void start(Stage arg0) throws Exception
    {
         System.out.println(textHeight("X", 5, TextBoundsType.LOGICAL)); // A
         System.out.println(textHeight("X", 5, TextBoundsType.LOGICAL_VERTICAL_CENTER)); // B
         System.exit(0);
    }

    public double textHeight(String text, double size, TextBoundsType tbt)
    {
        Text t = new Text(text);
        t.setBoundsType(tbt);
        t.setFont(Font.font("arial", size));
        return t.getLayoutBounds().getHeight();
    }

    public static void main(String[] args)
    {
        launch(args);
    }
}

如果运行该程序并观察每个函数调用的输出,然后交换注释的A和B行并运行,则带有“ LOGICAL”界限的调用输出将更改。这很奇怪,因为我看不到函数“ textHeight”是不是纯净的。此外,如果您更改了调用中的大小或文本参数,使它们在两行上都不相同,则此行为将消失。我正在用jre1.8.0_121运行该程序,这可能是潜在的错误,还是我丢失了某些东西?

0 个答案:

没有答案