У меня есть JTextField по имени tf. Пользователь должен ввести свое имя в поле. У меня также есть Jbutton с именем p, и я написал приведенный ниже код таким образом, что p's actionListener должен запускаться только в том случае, если пользователь ввел что-то в текстовое поле . Но код внутри if statement выполняется, даже если в текстовое поле не введено ничего, что является нулевым.

    while(true)
    {
        if(tf.getText()!=null)
        {
    p.addActionListener(new ActionListener(){

        public void actionPerformed(ActionEvent e)


    {

        System.out.println("Welcome to Guess the number Game");
        System.out.println("You have 3 chances to guess a number between 0 and 10 excluding 10");
        ne.remove(p);

    }
    });
    break;
    }
    }

Почему программа не работает должным образом? Это что-то связано с потоками?

Есть ли какие-либо средства, с помощью которых я могу перевести EDT (поток отправки событий) в спящий режим?

0
Mathews Mathai 25 Фев 2016 в 17:33

2 ответа

Лучший ответ

Как сказано в моем комментарии, это должно решить вашу проблему.

while(true) {
    if(null != tf.getText() && !tf.getText().equals("")) {
        //do stuff
    }
}

В качестве побочного примечания, имея дело с такими значениями, я стараюсь проверять как null, так и empty, чтобы охватить все базы

1
Brandon Laidig 25 Фев 2016 в 14:55

tf.getText() никогда не вернет Null, поэтому вы можете легко проверить длину, если она больше 0.

if(tf.getText().length() > 0) {
   // do the stuff
}
0
Bahramdun Adil 25 Фев 2016 в 15:11