간단한 질문처럼 보였지만 오랜 시간 주제를 연구 한 후에도 여전히 이에 대한 답을 찾을 수 없습니다. 자바를 사용하여 캐럿 (텍스트 커서) 위치 옆에 작은 툴팁을 표시하고 싶습니다. 모든 애플리케이션 내부에서 캐럿 위치를 지정해야합니다. 즉, Word, 메모장, Chrome 브라우저를 열고 입력을 시작하면 커서의 X & Y를 볼 필요가 있습니다. Java를 사용하여이 작업을 수행 할 수있는 방법은 무엇입니까? CodeProject의 C#에서 구현을 보았지만 java에서이 작업을 수행해야합니다.Java를 사용하는 모든 애플리케이션에서 캐럿 위치를 얻는 방법은 무엇입니까?
0
A
답변
-1
는 기본적으로 .getMagicCaretPosition() 함수를 사용
import java.awt.Dimension;
import java.awt.Point;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.text.Caret;
public class CaretPos implements Runnable
{
JFrame frame;
JPanel panel;
JTextPane tPane;
Caret newCaret;
Point point;
@Override
public void run() {
frame = new JFrame("CaretPos");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel = new JPanel();
tPane = new JTextPane();
newCaret = tPane.getCaret(); // you probably dont need to create another
// Caret, but i did anyway to add the listener
newCaret.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
point = newCaret.getMagicCaretPosition();
System.out.println(point);
}
});
tPane.setCaret(newCaret);
tPane.setPreferredSize(new Dimension(500,500));
panel.add(tPane);
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args)
{
CaretPos run = new CaretPos();
SwingUtilities.invokeLater(run);
}
}
나는 JTextPane가 사용을하지만, 확실히 다른 스윙 구성 요소가
편집을 사용할 수있는 메신저 : 나는 완전히 질문을 오해 죄송합니다. 나는 당신이 어떤 프로그램 에든 caret 포지션을 찾고 싶다고 생각했습니다. 내 잘못이야.
네이티브 레벨에서 이걸 가능하다고 확신하지 못합니다. (분명히 자바에서 온 것은 아니지만, JNA/JNI 통합이 필요합니다) – MadProgrammer
좋아, 분명히 창문 아래에서 ... [GUITHREADINFO ] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms632604 (v = vs.85) .aspx) – MadProgrammer
그리고 C#에서 변환하는 데 신경 쓰지 않는다면 [ 이 예제] (http://www.codeproject.com/Articles/34520/Getting-Caret-Position-Inside-Any-Application) – MadProgrammer