如何使用Java在任何应用程序中获取插入位置?

时间:2014-09-01 23:15:31

标签: java position cursor caret

这似乎是一个如此简单的问题,但经过长时间的研究,我仍然无法找到任何答案。 使用Java,我想在插入符号(文本光标)位置旁边显示一个小工具提示。 我需要在任何应用程序中考虑位置。 这意味着如果我打开Word,记事本,Chrome浏览器并开始输入,我需要看X&光标的Y. 有没有办法用Java做到这一点? 我在CodeProject上看过C#的实现,但我需要在java中做到这一点。

1 个答案:

答案 0 :(得分:-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,但我确定可以使用其他摆动组件

编辑:对不起,我完全误解了你的问题。我以为你想找到插入符号 在任何你的节目中的位置。我的坏。