Изменение размера TextFlow идеально связанного закрытого текста изменяет, когда размер шрифта Размер

голоса
0

У меня есть элемент 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 больше перед изменением размеров прилагаемых текстов. Это не сработало. Я также попытался сделать фиктивный текст в новом размере и использование этих размеров. Не похоже, чтобы заставить его работать. Любой совет?

Картинки: Первоначальный

Initial

Initial

Задан 19/03/2020 в 22:01
источник пользователем
На других языках...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more