Java 使用KeyboardFocusManager按键时获取插入符号位置

Java 使用KeyboardFocusManager按键时获取插入符号位置,java,swing,jtextarea,keyboardfocusmanager,Java,Swing,Jtextarea,Keyboardfocusmanager,当“您正在使用通用按键事件分派器时,我正在尝试获取当前插入符号位置。可能的事件有按下按键,按键和释放按键。根据您所说的,您需要键入按键。因此,请对此进行筛选: KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(new KeyEventDispatcher() { public boolean dispatchKeyEvent(KeyEvent e) { i

当“您正在使用通用按键事件分派器时,我正在尝试获取当前插入符号位置。可能的事件有按下
按键
按键
和释放
按键
。根据您所说的,您需要键入
按键
。因此,请对此进行筛选:

KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(new KeyEventDispatcher() {
        public boolean dispatchKeyEvent(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.KEY_TYPED) {
                return ((TextClass) textArea).checkKeyTyped(e);
            }
        }
    });

这不是您应该如何做的,您应该实现一个并将其添加到
JTextArea
中,如下所示:

final JTextArea textArea = new TextClass();
...
textArea.addKeyListener(new KeyListener() {
    @Override
    public void keyTyped(final KeyEvent e) {
        char key = e.getKeyChar();
        switch (key) {
            case '<':
                System.out.print("   " + textArea.getSelectionStart());
        }
    }

    @Override
    public void keyPressed(final KeyEvent e) {
    }

    @Override
    public void keyReleased(final KeyEvent e) {
    }
});
final JTextArea textArea=new TextClass();
...
addKeyListener(新的KeyListener(){
@凌驾
public void keyTyped(最终KeyEvent e){
char key=e.getKeyChar();
开关(钥匙){

案例“文档侦听器和插入符号”
final JTextArea textArea = new TextClass();
...
textArea.addKeyListener(new KeyListener() {
    @Override
    public void keyTyped(final KeyEvent e) {
        char key = e.getKeyChar();
        switch (key) {
            case '<':
                System.out.print("   " + textArea.getSelectionStart());
        }
    }

    @Override
    public void keyPressed(final KeyEvent e) {
    }

    @Override
    public void keyReleased(final KeyEvent e) {
    }
});