在Java中从KeyTyped创建一个String

时间:2016-06-18 01:37:32

标签: java tostring keyevent

我必须使用KeyListener创建一个昵称,并且我会做所有事情。我想用keyTyped写昵称,但我不知道,如何保存每个字母。对于exaple:

keyTyped(KeyEvent e){           
        char key = e.getKeyChar();
        nick = new String[10];
        for(int i = 0; i<10; i++){
            nick[i] = Character.toString(key);
            key = e.getKeyChar();
        }
 }

不幸的是,每个字母都是最后一个字母。怎么做?

3 个答案:

答案 0 :(得分:2)

这是因为e.getKeyChar()仅拉取已按下的字符,每次都不会获取新的字符。因此,数组总是只是字符的10倍。你的昵称是否需要是一个数组?因为如果它没有,你可以做这样的事情(这也意味着,如果你摆脱了if语句,那么昵称可以随你所愿):

int count = 0;
String nick = ""; 
keyTyped (KeyEvent e){
        char key = e.getKeyChar;
        //If your nickname needs to be only 10 characters long, then this
        //Stops too many characters from entering
        if (count < 10){

            nick += key
        }
}

答案 1 :(得分:0)

每次输入一个键时,for循环就会运行,就像你说的那样,使数组中的每个字母都输入最后一个字母。在keyTyped事件之外定义计数器变量,将其用作数组位置,然后在每次键入键时将其递增。还要在keyTyped事件之外定义昵称。

int count = 0;
nick = new String[10];
keyTyped(KeyEvent e){           
        if(count<nick.length) { //make sure if more than 10 characters are pressed it wont cause an error
            char key = e.getKeyChar();
            nick[count] = Character.toString(key);
            count += 1;
        }
 }

答案 2 :(得分:0)

这里每次从键盘上取下角色时都会执行“for”循环。每个时间变量i被设置为0,最后一个字符被放置在字符串数组中。

在从键盘获取字符之前初始化循环变量。

我希望这可以解决您的问题。