возникла проблема с некоторым написанным мною кодом, который я предположил просто как ошибка в моей логике.Однако я разобрал проблему до следующего и не могу понять, что происходит:
С этим классом
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 и запустите, вывод вызова с «ЛОГИЧЕСКИМИ» границами изменится.Это очень странно, поскольку я не вижу, как функция textHeight не является чистой.Кроме того, если вы измените размер или параметры текста в вызовах так, чтобы они не были одинаковыми в обеих строках, это поведение исчезнет.Я запускаю эту программу с jre1.8.0_121, это может быть потенциальная ошибка или я что-то упустил?