खोने के बाद टेक्स्ट पर हाइलाइटिंग दिखाना बंद कर देता है जब मेरा jTextArea फ़ोकस में है, तो यह टेक्स्ट हाइलाइटिंग की अनुमति देता है, लेकिन यह फोकस खोने पर टेक्स्ट चयन नहीं दिखाता है। क्या उपयोगकर्ता हाइलाइटिंग को प्रदर्शित करना जारी रखना संभव है भले ही उपयोगकर्ता संबंधित jFrame पर किसी अन्य घटक पर फ़ोकस करता है?jTextArea फोकस
5
A
उत्तर
3
लेकिन फोकस खोने पर टेक्स्ट पर चयन नहीं दिखाता है।
वहाँ तीन तरीके हैं:
मामले कि हम माउस घटना से पेंटिंग शिल्पकृति के रूप में चयन के बारे में बात मेरे सवाल को देखने में सबसे आसान कैसे ओवरराइड करने के लिए DefaultCaret#setBlinkRate(), great knowledge and answer by @camickr
- या प्रोग्राम के ओवरराइड हाइलाइटर
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
कैरट के चयन के लिए एक सरल समाधान का DefaultCaret का एक सरल उपवर्गीकरण है:
textArea.setCaret(new DefaultCaret() {
@Override
public void setSelectionVisible(boolean visible) {
super.setSelectionVisible(true);
}
});
+0
यह पूरी तरह से काम किया। फोकस खो जाने के बाद बस रहने के लिए हाइलाइट की आवश्यकता थी। –
संबंधित मुद्दे
- 1. JtextArea
- 2. JTextArea
- 3. JTextArea
- 4. JTextArea
- 5. JTextArea
- 6. JTextArea
- 7. JTextArea
- 8. जावा - JTextArea
- 9. जावा - JTextArea
- 10. जावा लॉग ==> JTextArea
- 11. JTextArea/JTextComponent setText क्रैश
- 12. जावा JTextArea KeyListener
- 13. एक JTextArea या JTextPane
- 14. JTextArea में लाइन-स्पेसिंग
- 15. JTextArea में मार्जिन जोड़ना?
- 16. पहली पंक्ति jtextarea
- 17. फोकस
- 18. फोकस
- 19. फोकस
- 20. फोकस
- 21. फोकस
- 22. फोकस
- 23. JTextArea शब्द रैप आकार बदलना
- 24. JTextArea निरंतर आकार कैसे रखें?
- 25. स्क्रोल करने योग्य JTextArea (जावा)
- 26. JTextArea को कैसे साफ़ करें?
- 27. JQuery फोकस
- 28. jQuery फोकस
- 29. स्क्रॉलव्यूयर फोकस
- 30. अंतिम फोकस
बेहतर मदद जल्दी के लिए, पोस्ट अपने एक कोड [एसएससीसीई] (http://www.sscce.org) के रूप में कोड जो आपकी समस्या का प्रदर्शन करता है। यह उपयोगकर्ताओं को आपकी समस्या की प्रतिलिपि बनाने/चिपकाने और पुन: पेश करने की अनुमति देता है। –
मुझे लगता है कि यह संभव है, लेकिन मानक शामिल विजेट के साथ नहीं। इसके लिए आपको 'JTextArea' का उप-वर्ग लिखना होगा। – 11684