[英]How to get caret position inside any application using Java?
這似乎是一個簡單的問題,但是經過長時間的研究,我仍然找不到任何答案。 使用Java,我想在插入符號(文本光標)位置旁邊顯示一個小的工具提示。 我需要在任何應用程序中插入符號的位置。 這意味着,如果我打開Word,記事本,Chrome瀏覽器並開始輸入內容,則需要查看光標的X和Y。 使用Java可以做到這一點嗎? 我已經在CodeProject上看到了C#中的實現,但是我需要在java中實現。
基本上使用.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,但是我確定可以使用其他swing組件
編輯:對不起,我完全誤解了你的問題。 我以為您想在任何程序中找到插入符號的位置。 我的錯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.