Gdy moja jTextArea jest aktywna, umożliwia podświetlenie tekstu, ale nie pokazuje wyboru tekstu, gdy traci ostrość. Czy możliwe jest dalsze wyświetlanie podświetlania tekstu, nawet jeśli użytkownik przenosi fokus na inny komponent w powiązanym jFrame?jTextArea przestaje pokazywać podświetlanie tekstu po utracie ostrości
5
A
Odpowiedz
3
ale nie pokazuje zaznaczenia tekstu po utracie ostrości.
istnieją trzy sposoby:
najłatwiejsze w przypadku, gdy mówimy o wyborze jak malowanie artefakt z myszy Event zobaczyć moje pytanie Jak zastąpić DefaultCaret#setBlinkRate(), great knowledge and answer by @camickr
- lub programowo zastąpić Highlighter
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
Jedno proste obejście wyboru karetki jest proste podklasy z DefaultCaret:
textArea.setCaret(new DefaultCaret() {
@Override
public void setSelectionVisible(boolean visible) {
super.setSelectionVisible(true);
}
});
+0
To działało idealnie. Po prostu trzeba było, aby podświetlenie pozostało po utracie ostrości. –
Powiązane problemy
- 1. Ukryj klawiaturę po utracie ostrości UISearchBar
- 2. Migotanie okien przy utracie ostrości?
- 3. Jakikolwiek sposób, aby zapobiec utracie ostrości po kliknięciu tekstu wejściowego z pojemnika tinymce?
- 4. Windows 7: Zapobieganie utracie ostrości aplikacji
- 5. Dodając długi ciąg, podświetlanie składni przestaje działać
- 6. Odblokowywanie tabel po utracie nici
- 7. Stylizowanie tekstu w JTextArea lub JTextPane
- 8. emacs przestaje przewijać po ekranie pełnym tekstu używając
- 9. "editableCellTemplate" AngularJS (ng-grid) pozostaje w trybie edycji po utracie ostrości
- 10. Jak zmienić pozycję tekstu w JTextArea
- 11. Wyśrodkowywanie tekstu w JTextArea lub JTextPane - Poziome wyrównanie tekstu
- 12. Podświetlanie tekstu ad hoc w vim
- 13. Podświetlanie składni dla zwykłego tekstu (Sublime Text)
- 14. Włącz podświetlanie tekstu wiadomości w skrzynce huśtawka
- 15. Wyczyść pierwszą linię jtextarea
- 16. Jak przechwycić wszystkie zdarzenia na klawiaturze i zapobiec utracie ostrości w aplikacji WinForm?
- 17. MVC 3 przestaje działać po MVC4 Montaż
- 18. Po odświeżeniu strony jquery przestaje działać
- 19. MPMoviePlayerController przestaje grać po kilku sekundach
- 20. czy datanitro przestaje działać po 30 dniach?
- 21. Widżet Android przestaje działać po pewnym czasie?
- 22. Wtyczka Bxslider przestaje działać po pierwszej "akcji"
- 23. Automatyczna linia końcowa w JTextArea
- 24. Przewiń stronę w ustawieniach ostrości tekstu dla urządzeń mobilnych?
- 25. Niskie przepełnianie bufora AVOS w systemie iOS po utracie połączenia
- 26. Zapobieganie utracie zmiennych po naciśnięciu przycisku przeładowania przeglądarki
- 27. Zmiana rozmiaru słowa JTextArea
- 28. Tekst na mowę: podświetlanie słowo po słowie dla iPhone
- 29. Utrzymywanie ostrości/SelectedItem po zmianie DataGrid ItemsSource
- 30. Formatowanie TextBox utracone po zmianie ostrości
Dla lepszej pomocy wcześniej, zamieścić swoje kod jako [SSCCE] (http://www.sscce.org), który demonstruje twój problem. Dzięki temu użytkownicy mogą kopiować/wklejać i reprodukować swój problem. –
Myślę, że to możliwe, ale nie ze standardowymi dołączonymi widżetami. Będziesz musiał napisać do tego podklasę 'JTextArea'. – 11684