我对 Java 比较陌生,我正在尝试为我的桌面应用程序制作一个登录页面。我有一个名为“listen”的线程,应在应用程序首次打开时调用该线程,其工作是检查用户名和密码字段是否不为空。
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:
txtUsername = new JTextField();
pwdPassword = new JPasswordField();
希望这有帮助。
关于Java 线程 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32276666/