2017-02-14 1 views
0

J'essaie de créer une TextArea en lecture seule, mais le texte auquel je mets TextArea est si long qu'il doit être défilé. Une barre de défilement apparaît lorsque le texte est défini, mais la barre de défilement ne fonctionne pas.Zone de texte en lecture seule avec barre de défilement [JavaFx]

J'utilise un fichier .fxml pour tenir mon TextArea avec le code suivant:

<TextArea fx:id="consultantScheduleTextArea" editable="false" focusTraversable="false" prefHeight="454.0" prefWidth="597.0" visible="false" /> 

Si je comprends bien ce fait, je ne peux pas se concentrer sur elle (comme onglet au conteneur ou cliquez sur dedans), ce n'est pas modifiable (donc je ne peux pas changer le texte en tapant), et il commence invisible. J'ai essayé de mettre focusTraversable à true sans changement de comportement.

Dans mon contrôleur, j'ai mis la visibilité à true quand un bouton est cliqué puis obtenir des données de chaîne d'une base de données, le formater d'une certaine manière, puis le faire pour définir le contenu de TextArea.

myTextArea.appendText(myString); 

Le résultat est mon TextArea est rempli avec le contenu que j'ai en myString, scrollbar est créé automatiquement parce que la chaîne est en fait un grand nombre de lignes (permet de dire 300 lignes), mais encore une fois je ne peux pas la faire défiler.

Une aide?

EDIT: Je n'ai pas mentionné, ce TextArea est enveloppé dans une pile qui est enveloppée dans une grille. Je ne pense pas que ce soit important, mais juste au cas où. Cette hiérarchie est parce que sa partie d'une application complète que j'ai et c'est juste un composant sur l'une des interfaces graphiques.

+0

Je viens de recréer ce que vous avez dit que vous avez fait et je n'ai aucun problème. Assurez-vous que vous utilisez le dernier JDK. – Sedrick

+0

Je viens de l'essayer avec une très longue chaîne. Il a fallu un certain temps pour charger, mais une fois chargée, la barre de défilement a fonctionné. – Sedrick

+0

Essayez ceci pour vous assurer que votre interface graphique ne se verrouille pas. Juste une supposition sauvage. Platform.runLater (() -> {consultantScheduleTextArea.appendText (text.toString());}); et utilisez StringBuilder où vous le pouvez. – Sedrick

Répondre

0

essayer de l'utiliser sur votre TextArea

myTextArea.setEditable(false); 

ce que votre zone de texte en lecture seule et fera le permettre scrollbar

+0

Je le fais dans le fxml ... editable = "false" Je l'ai fait dans le code comme vous l'avez dit au lieu de fxml, ne fonctionne toujours pas, ceux-ci fonctionnent de la même façon que je ne le pensais pas. essayé de toute façon :) –

+0

où l'avez-vous ajouté exactement?dans quelle partie de votre code l'ajoutez-vous? –

+0

Sur le FXML, lorsque vous créez un objet, la propriété peut être définie ici. Ou vous pouvez le définir dans le contrôleur. J'ai fait les deux pour le rendre éditable (faux) et aucun travail. –

1

Bon, certains comment avec elle étant à l'intérieur d'un volet de la pile, le défilement ne fonctionnait pas. Je ne sais pas pourquoi, mais c'est arrivé.

Déballé du panneau de pile et fonctionne correctement.