Home > Enterprise >  Why does the text change after I set the Caret position for JTextArea?
Why does the text change after I set the Caret position for JTextArea?

Time:09-17

I'm creating a program which uses a JTextArea, and when I try to change the caret position it goes from this:

hello
Hello there
-
|

Code:

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.");
    }

to this:

hello
Hello there

|- 

Code:

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.");
    }

This is the output I want:

hello
Hello there
-|

Note: the "|" represents the caret

Let me know if you need any more code.

CodePudding user response:

You can simply replace Config.cmdln.getText().length() - 1 by Config.cmdln.getText().length() 1 (the - has changed to the ).

This is possible since you are adding a character with the println() line before.

  • Related