2010-05-06 2 views
1

J'ai une interface graphique Swing très simple avec juste un JTetxtArea. J'essaie de sélectionner par programme une partie du texte en utilisant:Swing: par programme, sélectionnez un texte

textArea.select(startSelection,endSelection); 

Ce travail. Cependant, dès que j'ajouter d'autres composants à l'interface graphique, je ne vois pas la sélection plus

frame.getContentPane().add(button);  
frame.getContentPane().add(textArea); 
textArea.select(startSelection,endSelection); 

Je pense que pendant layouting l'IUG, un événement provoque le texte à désélectionnés. Ai-je raison? Et quelqu'un pourrait-il suggérer une solution?

Mon but est d'avoir un programme qui affiche un texte, et permet à l'utilisateur d'entrer la position de début et de fin de sélection, et une sélection apparaît entre ces deux positions. Je vous remercie.

+0

ne pouvez-vous pas vous assurer que le textArea.select est déclenché * après * le cadre a été mis en page? – ninesided

+0

en fait, j'ai donné un exemple simplifié. J'ai sous-classé un composant de GUI, et l'appel à select() se produit dedans. Comment puis-je savoir quand le cadre est disposé? –

Répondre

4

La sélection de texte ne s'affiche que lorsque le composant de texte a le focus.

Les composants de texte prennent également en charge la "mise en évidence" à l'aide de la méthode getHighlighter(). AddHighlight(). Dans ce cas, la surbrillance reste si le composant a le focus ou non.

Si vous avez besoin de plus d'aide poster votre SSCCE qui démontre le problème.

+0

Cela a résolu le problème! Merci!!! –

0

Si ce que vous voulez vraiment est juste une sélection, pas en surbrillance (qui se comporte différemment), vous pouvez utiliser JTextComponent.getCaret().setSelectionVisible(true).

Questions connexes