У меня есть элемент TextFlow поверх StackPane, и он заполнен 8 строками текста длиной 80 символов. Я пытаюсь добавить возможность изменять размеры шрифта и увеличивать или уменьшать TextFlow в соответствии с изменением размера шрифта. Если я уменьшу размер шрифта, TextFlow будет вести себя как положено. Если я увеличу размер шрифта, начальный перенос текста и его размер будут искажены.
public List<Text> lines = new ArrayList<>();
public void testTerminal()
{
for (int x = 0; x < 8; x++)
{
Text t = new Text("123567890123456789012345678901234567890123567890123456789012345678901234567890\n");
t.setFont(Font.font("Monospaced", 14));
t.setFill(Color.WHITE);
t.setWrappingWidth(Double.MAX_VALUE);
lines.add(t);
}
this.terminal.getChildren().addAll(lines);
terminal.setMinHeight(lines.get(0).getBoundsInLocal().getHeight()*8.0);
terminal.setMaxHeight(lines.get(0).getBoundsInLocal().getHeight()*8.0);
terminal.setMinWidth(lines.get(0).getBoundsInLocal().getWidth());
terminal.setMaxWidth(lines.get(0).getBoundsInLocal().getWidth());
}
public void changeFontSize(int size)
{
// grow the TextFlow much larger than it should need to be
// for the new font size.
terminal.setMinHeight(lines.get(0).getBoundsInLocal().getHeight()*16.0);
terminal.setMaxHeight(lines.get(0).getBoundsInLocal().getHeight()*16.0);
terminal.setMinWidth(lines.get(0).getBoundsInLocal().getWidth()*10);
terminal.setMaxWidth(lines.get(0).getBoundsInLocal().getWidth()*10);
for (Text t: lines)
{
t.setFont(Font.font("Monospaced", size));
}
terminal.setMinHeight(lines.get(0).getBoundsInLocal().getHeight()*8.0);
terminal.setMaxHeight(lines.get(0).getBoundsInLocal().getHeight()*8.0);
terminal.setMinWidth(lines.get(0).getBoundsInLocal().getWidth());
terminal.setMaxWidth(lines.get(0).getBoundsInLocal().getWidth());
}
Поскольку проблема возникает только при увеличении размера шрифта, я предположил, что мне придется увеличить TextFlow до изменения размера приложенные тексты. Это не сработало. Я также попытался сделать фиктивный текст с новым размером и использовать эти размеры. Не могу заставить его работать. Любой совет?
Изображения:
Decrease Font Size">
Increase Font Size">