jTextArea에 포커스가 있으면 텍스트 강조 표시가 가능하지만 포커스가 사라지면 텍스트 선택 항목이 표시되지 않습니다. 사용자가 관련 jFrame의 다른 구성 요소로 포커스를 이동하더라도 텍스트 강조 표시를 계속 표시 할 수 있습니까?jTextArea는 포커스 손실 후 텍스트 강조 표시를 중지합니다.
5
A
답변
3
그러나 포커스를 잃을 때 텍스트 선택을 표시하지 않습니다.
세 가지 방법이 있습니다 : 어떻게 재정의
사용 우리가 내 질문을 볼 마우스 이벤트에서 회화 유물로 선택에 대해 이야기 경우 가장 쉬운 JTextPane, see Oracle tutorial
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. 업데이트 후 포커스 손실
- 2. notifyDataSetChanged() 후 포커스 손실
- 3. 텍스트 상자 포커스 손실
- 4. 양식로드 후 즉시 포커스 손실
- 5. 텍스트 상자의 포커스 손실 방지
- 6. 데스크톱 개발 : 포커스 손실 후 목표 기억
- 7. htmlentities 및 htmlspecialchars가 텍스트 표시를 중지합니다.
- 8. 사용법 - js로 포커스 손실 이벤트 후 텍스트 필드
- 9. inputTextArea IE8에서 포커스 손실
- 10. LookUpEdit가 포커스 이벤트 손실 후 값을 잃습니다.
- 11. C# 포커스 손실 및 포커스 손실 후 포커스를 잃은 후에 백 그라운드에서 Ping 실행
- 12. 레이어 손실 포커스
- 13. 각도 텍스트 상자 포커스 손실 이벤트
- 14. SiteMapPath가 ASP.NET에서 표시를 중지합니다. 4
- 15. 텍스트 메이트 구문 강조 표시를 편집 하시겠습니까?
- 16. 웹 사이트에서 텍스트 강조 표시를 잠급니다.
- 17. 폼의 C 포커스 손실 #
- 18. JavaScript에서 포커스 손실 감지
- 19. 포커스 손실 강제
- 20. 요소의 포커스 손실 방지
- 21. WPF ListBox 포커스 손실
- 22. 포커스 변경 텍스트 필드의 강조 색상 선택
- 23. 모바일 양식 필드 - 포커스 손실
- 24. Visual Studio에서 포커스 손실/훔치기 포커스 2013
- 25. WPF 사용자 컨트롤 포커스 손실
- 26. 은색으로 강조 표시를 반전합니다.
- 27. 보기에 강조 표시를 에뮬레이트하십시오.
- 28. 수동 텍스트 강조 표시를 허용하는 텍스트 편집기가 있습니까?
- 29. UITableViewCell 강조 표시를 비활성화하는 방법?
- 30. 텍스트 상자에 포커스가없는 경우 (키보드 포커스 손실) wpf에서 텍스트를 강조 표시하는 방법?
게시하여 자신의 문제를 보여주는 [SSCCE] (http://www.sscce.org) 코드. 이를 통해 사용자는 문제를 복사/붙여 넣기하고 재현 할 수 있습니다. –
표준이 포함 된 위젯이 아닌 가능하다고 생각합니다. 이를 위해'JTextArea'의 서브 클래스를 작성해야합니다. – 11684