2011-12-19 64 views
5

Tôi đang sử dụng java và tôi đang cố gắng tạo một số JTextArea không thể chỉnh sửa nhưng vẫn có dấu mũ trong trường. Nói cách khác, một Vùng văn bản không hiển thị các ký tự do người dùng nhập, nhưng vẫn có dấu nháy mắt (ví dụ: tiêu điểm).Giữ chữ cái trong TextArea khi không thể chỉnh sửa

Tôi thành thật nói về vấn đề này. Tôi đã thử mucking xung quanh với setEditable, nhưng không có cách nào để giữ dấu mũ. Tôi cũng đã thử xóa ký tự mà người dùng nhập ngay sau khi họ nhập, nhưng tôi không thể dừng nó nhấp nháy trên màn hình.

+0

hãy cẩn thận: bạn sẽ có thể khiến người dùng của bạn - một _caret_ nhấp nháy (đó là thuật ngữ kỹ thuật cho các điểm đánh dấu :-) là đầu mối thị giác tiêu chuẩn cho là có thể chỉnh sửa – kleopatra

Trả lời

8

Tôi nghĩ rằng sau đây sẽ giúp bạn:

textArea.getCaret().setVisible(true); 

hoặc

textArea.getCaret().setSelectionVisible(true); 
+0

Chúc mừng, hoạt động hoàn hảo –

+1

Trong trường hợp bạn muốn khôi phục con trỏ chuột là tốt, hãy thử 'textArea.setCursor (Cursor.getPredefinedCursor (Cursor.TEXT_CURSOR));' – gd1

1

Đối với các câu trả lời trên

textArea.getCaret().setVisible(true); 

không luôn luôn làm việc một cách hoàn hảo, nếu TextArea hoặc EditorPane mất tập trung, nói rằng bạn bấm vào một khung khác nhau hoặc một cái gì đó, khi bạn trở lại con trỏ sẽ được vô hình một lần nữa.

Tôi đã gặp vấn đề tương tự, có vẻ như giải pháp là thêm một người nghe tập trung và đặt nó hiển thị mỗi khi trình chỉnh sửa đạt tiêu điểm.

text.addFocusListener(new FocusListener() { 
    public void focusLost(FocusEvent e) { 
    return; 
    } 

    public void focusGained(FocusEvent e) { 
    text.getCaret().setVisible(true); // show the caret anyway 
    } 
}); 
+0

Tôi phải thêm 'text.getCaret(). setVisible (true);' trong trình nghe caret của tôi vì nó chỉ có trong người nghe tập trung không phải luôn luôn làm việc (mặc dù nó đã giúp). Điều này là với Java 8 (jdk 1.8.0_25)/Mac OS X MountainLion. – nyholku

Các vấn đề liên quan