Я относительно новичок в Java, и я пытаюсь сделать страницу входа для своего настольного приложения. У меня есть поток под названием «listen», который должен вызываться, когда приложение открывается первым, его задача - проверять погоду, поля имени пользователя и пароля не пустые.Java threading NullPointerException
public class Login extends JFrame implements Runnable {
private JPanel contentPane;
private JTextField txtUsername;
private JPasswordField pwdPassword;
private JLabel lblUsername;
private JButton btnLogin;
private JLabel lblPassword;
private JCheckBox cboxRemember;
private Thread run, listen;
private boolean running = true;
public Login() {
createWindow();
run = new Thread(this, "Running");
running = true;
run.start();
}
private void createWindow() {
//application layout and actionListener for login button
}
public void run() {
listen();
}
public void listen() {
listen = new Thread("Listen") {
public void run() {
while (running) {
if (txtUsername.getText().equals("") || pwdPassword.getText().equals("")) btnLogin.setEnabled(false);
else btnLogin.setEnabled(true);
}
}
};
listen.start();
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Login frame = new Login();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
Всякий раз, когда я пытаюсь выполнить свой код «слушать» нить бросает NullPointerException на этой линии if (txtUsername.getText().equals("") || pwdPassword.getText().equals("")) btnLogin.setEnabled(false);
я не уверен, что я делаю неправильно, любая помощь будет оценена, спасибо.
Ваше 'txtUsername' и' pwdPassword' JTextField пусты при запуске приложения. – CubeJockey
вы будете NPE, если txtUsername.getText() возвращает null ..... добавьте чек для этого, и это должна быть первая проверка. Что-то вроде (txtUsername.getText()! = Null && (txtUsername.getText(). Equals ("") || pwdPassword.getText(). Equals (""))). Ох и @ Троббинс упомянули, то же самое относится и к полю pwdPassword :) – digidude
Когда вы назначаете значение 'txtUsername'? У него явно нет (кроме «null»). – bcsb1001