Resize TextFlow a perfect legat Textul închis se schimbă atunci când dimensiunea fontului

voturi
0

Am un element de TextFlow peste un StackPane și este populat cu 8 linii de text, 80 caractere lungi. Am încercat să adăugați capacitatea de a schimba dimensiunile fontului și au TextFlow cresc sau psihiatru pentru a corespunde cu modificarea dimensiunii fontului. Dacă am reduce dimensiunea caracterelor, cum era de așteptat TextFlow se comportă. Dacă aș crește dimensiunea fontului, ambalajul de start textului și dimensiunea este toate deformată.

    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());

    }

Având în vedere că problema se întâmplă numai pe creșterea dimensiunii fontului, am presupus că ar trebui să facă TextFlow mai mare înainte de redimensionarea textelor închise. Acest lucru nu a funcționat. Am încercat, de asemenea, face un dummy text la noua dimensiune și utilizând aceste dimensiuni. Nu poate părea să-l la locul de muncă. Vreun sfat?

Imagini: Render

Inițială

Inițială

Întrebat 19/03/2020 la 22:01
sursa de către utilizator
În alte limbi...                            

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