2013-08-18 3 views
1

Я использую этот код, чтобы включить кнопку, когда оба поля заполнены и вывести его из строя, если они не являются:ява && на если заявление не работает

if (jTextFieldAccountName.getText().isEmpty() && 
    jPasswordFieldAccountPassword.getPassword().length == 0) { 
    jButton_Next.setEnabled(false); 
} else { 
    jButton_Next.setEnabled(true); 
} 

Но эта кнопка включена, даже если Я ввожу только одно из полей. Зачем?

ответ

4

Ваше заявление работает нормально. Как вы его написали, кнопка будет отключена только тогда, когда поля BOTH пусты (если jTextFieldAccountName пуст И jPasswordFieldAccountPassword длина равна 0). Когда вы вводите что-то в первое поле, оба поля больше не пусты, поэтому условие устанавливает false, и ваша кнопка включена.

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

if ((!jTextFieldAccountName.getText().isEmpty()) && (jPasswordFieldAccountPassword.getPassword().length > 0)) { 
      jButton_Next.setEnabled(true); 
     } 
     else { 
      jButton_Next.setEnabled(false); 
     } 

Если вы используете эту логику, вы также можете установить пароль, чтобы быть минимальной длины (например, пароль > 6, или что-то в этом роде).

+0

привет, это работает спасибо, но когда я попробую это ... и текстовое поле, и пароль пуст, и кнопка уже отключена ... когда я печатаю текстовое поле, кнопка все еще отключена, а затем введите пароль, кнопка все еще отключена ... он включается только тогда, когда я пытаюсь добавить 1 символ в текстовое поле, чтобы кнопка была включена ... – JeraldPunx

+0

Право. Вышеупомянутая логика будет включать кнопку только тогда, когда у вас есть данные в поле имени и пароля учетной записи. – BlackHatSamurai

1

Я думаю, что вы имели в виде использовать ИЛИ логический оператор ИЭ ||:

Если (текст-бокс-это пустой или пароль является слишком мало) THEN ...

Тогда попробуйте это код:

Примечание. Я также изменил условие пароля, поскольку пароли должны быть минимальными из 6 символов.