2010-05-06 8 views
1

저는 JTetxtArea만으로 구성된 매우 간단한 스윙 GUI를 가지고 있습니다. 프로그래밍 방식으로 텍스트의 일부를 선택하려고합니다 :스윙 : 프로그래밍 방식으로 텍스트 선택

textArea.select(startSelection,endSelection); 

이 작품은. 나는 GUI에 다른 구성 요소를 추가하지만 곧 나는 더 이상

frame.getContentPane().add(button);  
frame.getContentPane().add(textArea); 
textArea.select(startSelection,endSelection); 

내가 GUI를하고 설계하는 동안, 일부 이벤트는 텍스트가 의심의 선택을 해제 할 선택을 볼 수 없습니다. 내가 맞습니까? 그리고 아무도 해결책을 제안 할 수 있습니까?

제 목표는 텍스트를 표시하고 사용자가 시작 및 끝 선택 위치를 입력 할 수있게 해주는 프로그램을 가지고이 선택 위치 사이에 선택이 표시됩니다. 고맙습니다.

+0

프레임이 배치 된 후 * textArea.select가 실행되는지 확인할 수 없습니까? – ninesided

+0

실제로, 나는 간단한 예를 들었다. 나는 GUI 컴포넌트를 서브 클래스 화했으며 select() 호출은 그 내부에서 발생한다. 프레임이 언제 배치되었는지 어떻게 알 수 있습니까? –

답변

4

텍스트 선택은 텍스트 구성 요소에 포커스가있는 경우에만 표시됩니다.

텍스트 구성 요소는 getHighlighter(). addHighlight() 메서드를 사용하여 "강조 표시"를 지원합니다. 이 경우 강조 표시는 구성 요소에 포커스가 있는지 여부에 따라 달라집니다.

자세한 내용을 보려면 SSCCE에 문제가 있음을 게시하십시오.

+0

이것은 문제를 해결했습니다! 감사!!! –

0

정말로 원하는 것은 강조 표시 (다르게 동작하는)가 아닌 선택 일 뿐이므로 JTextComponent.getCaret().setSelectionVisible(true)을 사용할 수 있습니다.

관련 문제