Lorsque mon jTextArea est activé, il permet la mise en surbrillance du texte, mais il n'affiche pas la sélection de texte lorsqu'il perd le focus. Est-il possible de continuer à afficher le texte en surbrillance même si l'utilisateur déplace le focus sur un autre composant du jFrame associé?jTextArea ne montre plus de surlignage sur le texte après avoir perdu le focus
5
A
Répondre
3
mais n'affiche pas la sélection sur le texte lorsque la mise au point est perdue.
Il y a trois façons:
utilisation JTextPane, see Oracle tutorial
plus facile dans le cas où nous parler de sélection comme artefact de peinture de souris événement Voir ma question Comment passer outre DefaultCaret#setBlinkRate(), great knowledge and answer by @camickr
- ou programatically passer outre surligneur
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultHighlighter;
import javax.swing.text.Highlighter;
import javax.swing.text.JTextComponent;
public class MultiHighlight implements ActionListener {
private JTextComponent comp;
private String charsToHighlight;
public MultiHighlight(JTextComponent c, String chars) {
comp = c;
charsToHighlight = chars;
}
@Override
public void actionPerformed(ActionEvent e) {
Highlighter h = comp.getHighlighter();
h.removeAllHighlights();
String text = comp.getText().toUpperCase();
for (int j = 0; j < text.length(); j += 1) {
char ch = text.charAt(j);
if (charsToHighlight.indexOf(ch) >= 0) {
try {
h.addHighlight(j, j + 1, DefaultHighlighter.DefaultPainter);
} catch (BadLocationException ble) {
}
}
}
}
public static void main(String args[]) {
final JFrame frame = new JFrame("MultiHighlight");
frame.add(new JTextField("Another focusable JComponents"), BorderLayout.NORTH);
JTextArea area = new JTextArea(10, 20);
area.setText("This is the story\nof the hare who\nlost his spectacles."
+ "\nThis is the story\nof the hare who\nlost his spectacles.");
frame.getContentPane().add(new JScrollPane(area), BorderLayout.CENTER);
JButton b = new JButton("Highlight All Vowels");
b.addActionListener(new MultiHighlight(area, "aeiouAEIOU"));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(b, BorderLayout.SOUTH);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
frame.pack();
frame.setVisible(true);
}
});
}
}
7
Une solution simple pour la sélection de caret est un simple sous-classement de DefaultCaret:
textArea.setCaret(new DefaultCaret() {
@Override
public void setSelectionVisible(boolean visible) {
super.setSelectionVisible(true);
}
});
+0
Cela a fonctionné parfaitement. Juste besoin de mettre en évidence pour rester après la mise au point a été perdue. –
Questions connexes
- 1. DataGridView NullReferenceException sur InitializeEditingControlValue après avoir perdu le focus
- 2. ListBox conserve la sélection après avoir perdu le focus
- 3. Après avoir perdu le focus sur l'écran JPanel en balançant, l'écran n'affiche pas le contenu
- 4. C# - Win32: Obtenir un handle à la fenêtre la plus haute, après avoir perdu le focus?
- 5. Contrôle perdu le focus
- 6. comment invoquer un événement après avoir perdu le focus d'une zone de texte, asp.net mvc
- 7. flex REGAIN perdu le focus
- 8. android SeekBar - supprimer sur le focus perdu
- 9. Focus sur div perdu après l'appel AJAX
- 10. IE perdre le focus après avoir cliqué sur le champ
- 11. Afficher la sélection dans WPF RichTextBox dans ElementHost après avoir perdu le focus
- 12. Silverlight Business Application OOB - Tout le contenu disparaît après avoir perdu le focus
- 13. Découvrez pourquoi la zone de texte a perdu le focus
- 14. Comment mettre en surbrillance l'élément de liste sélectionné même après avoir perdu le focus?
- 15. JTextArea ne lira pas correctement le texte
- 16. JQuery Le focus complet automatique est perdu
- 17. perdu le focus avec le plugin jAlert
- 18. Formatage TextBox perdu lorsque le focus change
- 19. Fermer Popup lorsque le focus est perdu
- 20. Gardez une DropBown Combobox Silverlight ouverte après avoir perdu le focus
- 21. wpf listview a perdu le focus
- 22. JQuery détecte le focus perdu sur un autre élément de la page mais ne perd pas le focus du navigateur
- 23. AjaxFormValidatingBehavior Performance et perdu le focus sur Firefox
- 24. Programmer le focus après le texte de saisie dans UITextfield
- 25. Formulaire uniquement enregistrement lorsque les entrées ont perdu le focus
- 26. autohotkey: comment éviter problème « perdu le focus »
- 27. Élément réel qui a perdu le focus
- 28. le format Legend perdu après avoir utilisé: ax.legend (poignées, étiquettes)
- 29. jqgrid modifier cellule déclencheur sur focus perdu
- 30. Le texte ne montre pas si l'image sur le fond
Pour mieux aider plus tôt, poster votre code en tant que [SSCCE] (http://www.sscce.org) qui illustre votre problème. Cela permet aux utilisateurs de copier/coller et de reproduire votre problème. –
Je pense que c'est possible, mais pas avec les widgets standard inclus. Vous devrez écrire une sous-classe de 'JTextArea' pour cela. – 11684