java 为什么在设置JTextArea的插入符号位置后文本会更改?

enxuqcxy  于 2023-02-07  发布在  Java
关注(0)|答案(2)|浏览(122)

我正在创建一个使用JTextArea的程序,当我尝试更改插入符号的位置时,它将从以下位置开始:

hello
Hello there
-
|

代码:

public void executeCommand(String cmdName){
    Boolean cmdFound = false;
    
    for(int i = 0; i < cmdNames.size(); i++){
        if(cmdNames.get(i).toLowerCase().equals(cmdName.toLowerCase())){
            cmdFound = true;
            cmds.get(cmdName).actionPerformed(new ActionEvent(this, 0, null));
            Config.cmdln.println("-");
            Config.cmdln.setCaretPosition(Config.cmdln.getText().length()); //part that changes
            break;
        }
    }
    
    if(!cmdFound){
        Terminal.cmdln.println("Command " + "\"" + cmdName + "\"" + " not found.");
    }

改为:

hello
Hello there

|-

代码:

public void executeCommand(String cmdName){
    Boolean cmdFound = false;
    
    for(int i = 0; i < cmdNames.size(); i++){
        if(cmdNames.get(i).toLowerCase().equals(cmdName.toLowerCase())){
            cmdFound = true;
            cmds.get(cmdName).actionPerformed(new ActionEvent(this, 0, null));
            Config.cmdln.println("-");
            Config.cmdln.setCaretPosition(Config.cmdln.getText().length() - 1); //part that changes
            break;
        }
    }
    
    if(!cmdFound){
        Terminal.cmdln.println("Command " + "\"" + cmdName + "\"" + " not found.");
    }

这是我想要的输出:

hello
Hello there
-|

注:"|"表示插入符号
如果你还需要密码就告诉我。

v8wbuo2f

v8wbuo2f1#

您可以简单地将Config.cmdln.getText().length() - 1替换为Config.cmdln.getText().length() + 1-已更改为+)。
这是可能的,因为您在前面添加了一个带有println()的字符。

ff29svar

ff29svar2#

您也可以更改此设置:

Config.cmdln.println("-");  // puts a new line after the dash

改为:

Config.cmdln.print("-");    // doesn't put a new line after the dash

如果您希望在末尾使用空行,可以在设置插入符号后添加新行。

相关问题