gpt4 book ai didi

java - 在 JTextArea 中设置插入符位置

转载 作者:搜寻专家 更新时间:2023-10-31 19:49:37 24 4
gpt4 key购买 nike

我有一个 JTextArea。我有一个函数,可以在调用某些组合时选择一定数量的文本。它做得很好。问题是,我想在选择某些文本并按下 VK_LEFT 时将插入符号移动到选择的开头。 KeyListener 实现正确,我用其他方式测试了它。问题是,当我编写以下代码时:

@Override public void keyPressed( KeyEvent e) {
if(e.getKeyChar()==KeyEvent.VK_LEFT)
if(mainarea.getSelectedText()!=null)
mainarea.setCaretPosition(mainarea.getSelectionStart());
}

并将此监听器的实例添加到主区域,选择一些文本(使用我的函数)并按向左箭头键,插入符号位置设置为选择的末尾......我不会在开头。 .. 怎么了? :S

最佳答案

这是一段代码

    Action moveToSelectionStart = new AbstractAction("moveCaret") {

@Override
public void actionPerformed(ActionEvent e) {
int selectionStart = textComponent.getSelectionStart();
int selectionEnd = textComponent.getSelectionEnd();
if (selectionStart != selectionEnd) {
textComponent.setCaretPosition(selectionEnd);
textComponent.moveCaretPosition(selectionStart);
}
}

public boolean isEnabled() {
return textComponent.getSelectedText() != null;
}
};
Object actionMapKey = "caret-to-start";
textComponent.getInputMap().put(KeyStroke.getKeyStroke("LEFT"), actionMapKey);
textComponent.getActionMap().put(actionMapKey, moveToSelectionStart);

注意:不建议重新定义通常安装的键绑定(bind),例如 f.i。任何箭头键,用户可能会非常恼火 ;-) 最好寻找一些尚未绑定(bind)的键。

关于java - 在 JTextArea 中设置插入符位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5951428/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com