2011-08-30 3 views
8

setEditable이 비활성화되어있는 동안 어떻게 JTextArea에 캐럿을 넣을 수 있습니까?JTextArea setEditable이 false 일 때 캐럿을 표시합니다.

내가 볼 수 있도록 캐럿이 필요 샘플 코드 :

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); 
} 

내가 달성하고자하는 텍스트 영역 내에서 사용자가 입력, 문자가 표시되지해야 할 때, 점이다. 입력 된 문자는 OutputStream으로 리디렉션되고 적절한 InputStream이 수신되어 TextArea 내에 표시됩니다. 이 잘 작동하지만 setEditable (false) 때문에 캐럿 숨겨져 있습니다.

+0

텍스트와 텍스트 영역을 편집 할 수 그것은해야합니다 ... 좀 더 많은 코드를 넣으면 문제를 더 잘 볼 수 있습니다. – Charliemops

+0

당신이 말하는 OutputStream은 어디에 있습니까? 미안 해요, 나는 당신의 목표를 얻지 못합니다. – Charliemops

+0

이것은 샘플 코드이며 TextArea를 작성하는 방법을 보여 주려고 시도했습니다. 문제는이 코드에서도 볼 수 있습니다. TextArea가있는 단일 프레임을 실행하고 편집을 비활성화하고 String을 추가하는 것은 괜찮습니다. 그러나 Caret는 표시되지 않습니다. 이것이 내가 붙어있는 곳입니다. – 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); 
} 

공지 사항 사용자는 캐럿을 이동할 수 있지만, 그/그녀는 당신이 말하는 것을하지 않습니다 난 그냥 (윈도우 7) 코드를 테스트

관련 문제