2011-08-30 12 views
8

सेट करने योग्य अक्षम होने पर मैं JTextArea में कैरेट कैसे रख सकता हूं?JTextArea शो के दौरान कैरेट दिखाएं संपादन योग्य है

एक नमूना कोड जब मैं कैरट की जरूरत दिखाई दे सकता है:

public void run(){ 
    JFrame frame = new JFrame(); 
    JTextArea text = new JTextArea(); 
    text.setEditable(false); 
    String line = "added line"; 
    text.append(line); 
    text.setCaretPosition(text.getCaretPosition() + line.length()); 

    frame.getContentPane().add(text); 
    frame.setSize(300,300); 
    frame.setVisible(true); 
} 

क्या मैं हासिल करना चाहते हैं कि, जब TextArea भीतर उपयोगकर्ता प्रकार, वर्ण प्रदर्शित नहीं किया जाना चाहिए। टाइप किए गए वर्ण आउटपुटस्ट्रीम पर रीडायरेक्ट किए जाते हैं और उपयुक्त इनपुटस्ट्रीम प्राप्त होता है जो टेक्स्टएरिया के भीतर प्रदर्शित किया जाएगा। यह ठीक काम करता है, लेकिन सेटएडेबल (झूठी) के कारण कैरेट छुपा हुआ है।

+0

मैं बस (विंडोज 7 में) अपने कोड का परीक्षण और पाठ क्षेत्र संपादित नहीं कर सकते कि आप कहते हैं कि ऐसा नहीं करता है यह करना चाहिए ... शायद यदि आप थोड़ा और कोड डालते हैं तो यह संभव है कि – Charliemops

+0

समस्या बेहतर हो, आउटपुटस्ट्रीम कहां से बात कर रहे हैं? क्षमा करें, मुझे आपका लक्ष्य नहीं मिला है। – Charliemops

+0

यह एक नमूना कोड है, यह दिखाने का प्रयास किया कि मैं TextArea कैसे बना सकता हूं। समस्या इस कोड के साथ भी दिखाई दे रही है, यह टेक्स्टएरिया के साथ एक एकल फ्रेम चलाती है, संपादन अक्षम करती है, और स्ट्रिंग को जोड़ती है, यह ठीक है, लेकिन कैरेट दिखाई नहीं दे रहा है, वहीं मैं अटक गया हूं। – Tornike

उत्तर

12

text.getCaret().setVisible(true) और/या text.getCaret().setSelectionVisible(true)

+0

धन्यवाद, ठीक काम करता है :)) – Tornike

+0

+1 उनमें से दोनों काम करते हैं। मेरा समाधान एक गंदे चाल है, तो बेहतर उपयोग करें :) – Charliemops

2

ठीक है, मैं यहाँ एक कोड टुकड़ा जो कैरट चलता लेकिन न दें JTextArea संपादित डाल दिया। मुझे उम्मीद है इससे आपको मदद मिली होगी। यह एक छोटी सी चाल है जो टेक्स्ट क्षेत्र के फोकस के साथ खेलती है, जब फोकस प्राप्त होता है, संस्करण अक्षम होता है; लेकिन जब यह बंद हो जाता है, तो संस्करण यह संभव है। इस तरह, उपयोगकर्ता इसे संपादित करने में असमर्थ है लेकिन कैरेट देख सकता है।

public void run() { 
    JFrame frame = new JFrame(); 
    final JTextArea text = new JTextArea(); 
    text.addFocusListener(new FocusListener() { 

     public void focusLost(FocusEvent fe) { 
      text.setEditable(true);  
     } 

     public void focusGained(FocusEvent fe) { 
      text.setEditable(false); 
     } 
    }); 
    text.setEditable(true); 
    String line = "added line"; 
    text.append(line); 
    text.setCaretPosition(text.getCaretPosition() + line.length()); 

    frame.getContentPane().add(text); 
    frame.setSize(300,300); 
    frame.setVisible(true); 
} 

सूचना उपयोगकर्ता कैरेट को हिलाने सकते हैं, लेकिन वह/वह पाठ

संबंधित मुद्दे