Java 包含文本的JTextfield上的nullpointerException
所以你们说你们没有足够的信息来帮助我。很抱歉,这是我第一次在这样的论坛上提问,而且我没有在Java上工作很长时间 这是我的全部代码,可能会有很多错误,但如果您能帮助我解决这些问题并告诉我如何更好地进行Java编程,我会很高兴 主类:Java 包含文本的JTextfield上的nullpointerException,java,database,swing,nullpointerexception,Java,Database,Swing,Nullpointerexception,所以你们说你们没有足够的信息来帮助我。很抱歉,这是我第一次在这样的论坛上提问,而且我没有在Java上工作很长时间 这是我的全部代码,可能会有很多错误,但如果您能帮助我解决这些问题并告诉我如何更好地进行Java编程,我会很高兴 主类: public class Main { public static void main(String[] args) { new Main().top(); } void top() { GUI g = new GUI();
public class Main {
public static void main(String[] args) {
new Main().top();
}
void top() {
GUI g = new GUI();
}
}
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import javax.swing.*;
public class GUI {
JFrame frame;
JPanel panel;
static JLabel label;
static JLabel username_bezeichnung;
static JLabel vorname_bezeichnung;
static JLabel nachname_bezeichnung;
static JLabel geburtstag_bezeichnung;
static JLabel email_bezeichnung;
static JLabel passwort_bezeichnung;
static JButton registrieren;
static JButton login;
static JButton registrierenBestätigen;
static JTextField username;
static JTextField vorname;
static JTextField nachname;
static JTextField email;
static JFormattedTextField geburtstag;
static JPasswordField passwort;
void gui() {
ListenerHome h = new ListenerHome();
ListenerRegistrieren r = new ListenerRegistrieren();
/**
* Frames
*/
// Frame Main
frame = new JFrame("Main");
frame.setSize(800, 600);
frame.setLocation(600, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
/**
* Panels
*/
// Panel Main
panel = new JPanel();
panel.setSize(780, 475);
panel.setLayout(null);
frame.add(panel);
/**
* Labels
*/
// Label Main
label = new JLabel();
label.setSize(200, 300);
label.setLocation(230, 30);
label.setVisible(true);
label.setText("Guten Tag, was möchten Sie tun?");
panel.add(label);
// Label Username
username_bezeichnung = new JLabel();
username_bezeichnung.setBounds(65, 50, 120, 30);
username_bezeichnung.setVisible(false);
username_bezeichnung.setText("Username");
panel.add(username_bezeichnung);
// Label Vorname
vorname_bezeichnung = new JLabel();
vorname_bezeichnung.setBounds(65, 90, 120, 30);
vorname_bezeichnung.setVisible(false);
vorname_bezeichnung.setText("Vorname");
panel.add(vorname_bezeichnung);
// Label Nachname
nachname_bezeichnung = new JLabel();
nachname_bezeichnung.setBounds(65, 130, 120, 30);
nachname_bezeichnung.setVisible(false);
nachname_bezeichnung.setText("Nachname");
panel.add(nachname_bezeichnung);
// Label Geburtstag
geburtstag_bezeichnung = new JLabel();
geburtstag_bezeichnung.setBounds(390, 50, 120, 30);
geburtstag_bezeichnung.setVisible(false);
geburtstag_bezeichnung.setText("Geburtstag");
panel.add(geburtstag_bezeichnung);
// Label E-Mail
email_bezeichnung = new JLabel();
email_bezeichnung.setBounds(390, 90, 120, 30);
email_bezeichnung.setVisible(false);
email_bezeichnung.setText("E-Mail");
panel.add(email_bezeichnung);
// Label Passwort
passwort_bezeichnung = new JLabel();
passwort_bezeichnung.setBounds(390, 130, 120, 30);
passwort_bezeichnung.setVisible(false);
passwort_bezeichnung.setText("Passwort");
panel.add(passwort_bezeichnung);
/**
* Buttons
*/
// Button registrieren
registrieren = new JButton("Registrieren");
registrieren.setLocation(200, 320);
registrieren.setSize(120, 50);
registrieren.setVisible(true);
registrieren.addActionListener(h);
panel.add(registrieren);
// Button login
login = new JButton("Login");
login.setLocation(350, 320);
login.setSize(120, 50);
login.setVisible(true);
login.addActionListener(h);
panel.add(login);
// Button registrieren bestätigen
registrierenBestätigen = new JButton("Registrieren");
registrierenBestätigen.setLocation(390, 350);
registrierenBestätigen.setSize(120, 50);
registrierenBestätigen.setVisible(false);
registrierenBestätigen.addActionListener(r);
panel.add(registrierenBestätigen);
/**
* Textfields
*/
// Textfield Username
username = new JTextField("", 20);
username.setBounds(150, 50, 120, 30);
username.setVisible(false);
panel.add(username);
// Textfield Vorname
vorname = new JTextField("", 20);
vorname.setBounds(150, 90, 120, 30);
vorname.setVisible(false);
panel.add(vorname);
// Textfield Nachname
nachname = new JTextField("", 20);
nachname.setBounds(150, 130, 120, 30);
nachname.setVisible(false);
panel.add(nachname);
// Textfield Geburtstag
geburtstag = new JFormattedTextField(new SimpleDateFormat("dd.MM.yyyy"));
geburtstag.setValue(new java.util.Date());
geburtstag.setBounds(475, 90, 120, 30);
geburtstag.setVisible(false);
panel.add(geburtstag);
// Textfield E-Mail
email = new JTextField("", 25);
email.setBounds(475, 50, 120, 30);
email.setVisible(false);
panel.add(email);
// Passwortfield Passwort
passwort = new JPasswordField("", 20);
passwort.setBounds(475, 130, 120, 30);
passwort.setVisible(false);
panel.add(passwort);
}
}
类GUI:
public class Main {
public static void main(String[] args) {
new Main().top();
}
void top() {
GUI g = new GUI();
}
}
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import javax.swing.*;
public class GUI {
JFrame frame;
JPanel panel;
static JLabel label;
static JLabel username_bezeichnung;
static JLabel vorname_bezeichnung;
static JLabel nachname_bezeichnung;
static JLabel geburtstag_bezeichnung;
static JLabel email_bezeichnung;
static JLabel passwort_bezeichnung;
static JButton registrieren;
static JButton login;
static JButton registrierenBestätigen;
static JTextField username;
static JTextField vorname;
static JTextField nachname;
static JTextField email;
static JFormattedTextField geburtstag;
static JPasswordField passwort;
void gui() {
ListenerHome h = new ListenerHome();
ListenerRegistrieren r = new ListenerRegistrieren();
/**
* Frames
*/
// Frame Main
frame = new JFrame("Main");
frame.setSize(800, 600);
frame.setLocation(600, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
/**
* Panels
*/
// Panel Main
panel = new JPanel();
panel.setSize(780, 475);
panel.setLayout(null);
frame.add(panel);
/**
* Labels
*/
// Label Main
label = new JLabel();
label.setSize(200, 300);
label.setLocation(230, 30);
label.setVisible(true);
label.setText("Guten Tag, was möchten Sie tun?");
panel.add(label);
// Label Username
username_bezeichnung = new JLabel();
username_bezeichnung.setBounds(65, 50, 120, 30);
username_bezeichnung.setVisible(false);
username_bezeichnung.setText("Username");
panel.add(username_bezeichnung);
// Label Vorname
vorname_bezeichnung = new JLabel();
vorname_bezeichnung.setBounds(65, 90, 120, 30);
vorname_bezeichnung.setVisible(false);
vorname_bezeichnung.setText("Vorname");
panel.add(vorname_bezeichnung);
// Label Nachname
nachname_bezeichnung = new JLabel();
nachname_bezeichnung.setBounds(65, 130, 120, 30);
nachname_bezeichnung.setVisible(false);
nachname_bezeichnung.setText("Nachname");
panel.add(nachname_bezeichnung);
// Label Geburtstag
geburtstag_bezeichnung = new JLabel();
geburtstag_bezeichnung.setBounds(390, 50, 120, 30);
geburtstag_bezeichnung.setVisible(false);
geburtstag_bezeichnung.setText("Geburtstag");
panel.add(geburtstag_bezeichnung);
// Label E-Mail
email_bezeichnung = new JLabel();
email_bezeichnung.setBounds(390, 90, 120, 30);
email_bezeichnung.setVisible(false);
email_bezeichnung.setText("E-Mail");
panel.add(email_bezeichnung);
// Label Passwort
passwort_bezeichnung = new JLabel();
passwort_bezeichnung.setBounds(390, 130, 120, 30);
passwort_bezeichnung.setVisible(false);
passwort_bezeichnung.setText("Passwort");
panel.add(passwort_bezeichnung);
/**
* Buttons
*/
// Button registrieren
registrieren = new JButton("Registrieren");
registrieren.setLocation(200, 320);
registrieren.setSize(120, 50);
registrieren.setVisible(true);
registrieren.addActionListener(h);
panel.add(registrieren);
// Button login
login = new JButton("Login");
login.setLocation(350, 320);
login.setSize(120, 50);
login.setVisible(true);
login.addActionListener(h);
panel.add(login);
// Button registrieren bestätigen
registrierenBestätigen = new JButton("Registrieren");
registrierenBestätigen.setLocation(390, 350);
registrierenBestätigen.setSize(120, 50);
registrierenBestätigen.setVisible(false);
registrierenBestätigen.addActionListener(r);
panel.add(registrierenBestätigen);
/**
* Textfields
*/
// Textfield Username
username = new JTextField("", 20);
username.setBounds(150, 50, 120, 30);
username.setVisible(false);
panel.add(username);
// Textfield Vorname
vorname = new JTextField("", 20);
vorname.setBounds(150, 90, 120, 30);
vorname.setVisible(false);
panel.add(vorname);
// Textfield Nachname
nachname = new JTextField("", 20);
nachname.setBounds(150, 130, 120, 30);
nachname.setVisible(false);
panel.add(nachname);
// Textfield Geburtstag
geburtstag = new JFormattedTextField(new SimpleDateFormat("dd.MM.yyyy"));
geburtstag.setValue(new java.util.Date());
geburtstag.setBounds(475, 90, 120, 30);
geburtstag.setVisible(false);
panel.add(geburtstag);
// Textfield E-Mail
email = new JTextField("", 25);
email.setBounds(475, 50, 120, 30);
email.setVisible(false);
panel.add(email);
// Passwortfield Passwort
passwort = new JPasswordField("", 20);
passwort.setBounds(475, 130, 120, 30);
passwort.setVisible(false);
panel.add(passwort);
}
}
班级听众主页
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ListenerHome implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == GUI.registrieren) {
GUI.label.setVisible(false);
GUI.username_bezeichnung.setVisible(true);
GUI.vorname_bezeichnung.setVisible(true);
GUI.nachname_bezeichnung.setVisible(true);
GUI.geburtstag_bezeichnung.setVisible(true);
GUI.email_bezeichnung.setVisible(true);
GUI.passwort_bezeichnung.setVisible(true);
GUI.registrieren.setVisible(false);
GUI.login.setVisible(false);
GUI.registrierenBestätigen.setVisible(true);
GUI.username.setVisible(true);
GUI.vorname.setVisible(true);
GUI.nachname.setVisible(true);
GUI.email.setVisible(true);
GUI.geburtstag.setVisible(true);
GUI.passwort.setVisible(true);
}
}
}
java.lang.NullPointerException
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.clearParameter(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setChar(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setString(Unknown Source)
at verwaltung.ListenerRegistrieren.addBenutzer(ListenerRegistrieren.java:37)
at verwaltung.ListenerRegistrieren.actionPerformed(ListenerRegistrieren.java:20)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
类ListenerRegistrieren
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class ListenerRegistrieren implements ActionListener {
public void actionPerformed(ActionEvent e) {
if(e.getSource() == GUI.registrierenBestätigen) {
addBenutzer();
}
}
private static void addBenutzer() {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection("jdbc:odbc:MSAccess");
PreparedStatement pstm;
String sql = "Insert Into Benutzer ('Benutername', 'Vorname', 'Nachname', 'E-Mail') values ('?','?','?','?')";
pstm = conn.prepareStatement(sql);
// SQL Statements
pstm.setString(1, GUI.username.getText());
pstm.setString(2, GUI.vorname.getText());
pstm.setString(3, GUI.nachname.getText());
pstm.setString(4, GUI.email.getText());
pstm.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
}
}
堆栈跟踪
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ListenerHome implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == GUI.registrieren) {
GUI.label.setVisible(false);
GUI.username_bezeichnung.setVisible(true);
GUI.vorname_bezeichnung.setVisible(true);
GUI.nachname_bezeichnung.setVisible(true);
GUI.geburtstag_bezeichnung.setVisible(true);
GUI.email_bezeichnung.setVisible(true);
GUI.passwort_bezeichnung.setVisible(true);
GUI.registrieren.setVisible(false);
GUI.login.setVisible(false);
GUI.registrierenBestätigen.setVisible(true);
GUI.username.setVisible(true);
GUI.vorname.setVisible(true);
GUI.nachname.setVisible(true);
GUI.email.setVisible(true);
GUI.geburtstag.setVisible(true);
GUI.passwort.setVisible(true);
}
}
}
java.lang.NullPointerException
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.clearParameter(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setChar(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setString(Unknown Source)
at verwaltung.ListenerRegistrieren.addBenutzer(ListenerRegistrieren.java:37)
at verwaltung.ListenerRegistrieren.actionPerformed(ListenerRegistrieren.java:20)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
我希望你现在能更好地帮助我。谢谢你们的帮助,伙计们 我猜抛出空指针的不是
JTextfield
,而是GUI
。这可能没有对顶部的对象的引用
正如我从代码中看到的,您没有GUI类的构造函数。你需要改变
void gui() {
进入
更改此项并删除数据库连接后,我可以访问GUI上的字段,使用静态变量的方式很难看,但可以工作:
private static void addBenutzer() {
try {
System.out.println(GUI.username.getText());
} catch (Exception e) {
e.printStackTrace();
}
}
如果异常现在仍然发生,那么数据库连接有问题,我无法进一步测试,因为我没有数据库和驱动器。但对我来说,db连接看起来不错
以下是应如何完成的所有课程:
import java.text.SimpleDateFormat;
import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class GUI {
JFrame frame;
JPanel panel;
JLabel label;
JLabel username_bezeichnung;
JLabel vorname_bezeichnung;
JLabel nachname_bezeichnung;
JLabel geburtstag_bezeichnung;
JLabel email_bezeichnung;
JLabel passwort_bezeichnung;
JButton registrieren;
JButton login;
JButton registrierenBestätigen;
JTextField username;
JTextField vorname;
JTextField nachname;
JTextField email;
JFormattedTextField geburtstag;
JPasswordField passwort;
public GUI() {
ListenerHome h = new ListenerHome(this);
ListenerRegistrieren r = new ListenerRegistrieren(this);
/**
* Frames
*/
// Frame Main
frame = new JFrame("Main");
frame.setSize(800, 600);
frame.setLocation(600, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
/**
* Panels
*/
// Panel Main
panel = new JPanel();
panel.setSize(780, 475);
panel.setLayout(null);
frame.add(panel);
/**
* Labels
*/
// Label Main
label = new JLabel();
label.setSize(200, 300);
label.setLocation(230, 30);
label.setVisible(true);
label.setText("Guten Tag, was m�chten Sie tun?");
panel.add(label);
// Label Username
username_bezeichnung = new JLabel();
username_bezeichnung.setBounds(65, 50, 120, 30);
username_bezeichnung.setVisible(false);
username_bezeichnung.setText("Username");
panel.add(username_bezeichnung);
// Label Vorname
vorname_bezeichnung = new JLabel();
vorname_bezeichnung.setBounds(65, 90, 120, 30);
vorname_bezeichnung.setVisible(false);
vorname_bezeichnung.setText("Vorname");
panel.add(vorname_bezeichnung);
// Label Nachname
nachname_bezeichnung = new JLabel();
nachname_bezeichnung.setBounds(65, 130, 120, 30);
nachname_bezeichnung.setVisible(false);
nachname_bezeichnung.setText("Nachname");
panel.add(nachname_bezeichnung);
// Label Geburtstag
geburtstag_bezeichnung = new JLabel();
geburtstag_bezeichnung.setBounds(390, 50, 120, 30);
geburtstag_bezeichnung.setVisible(false);
geburtstag_bezeichnung.setText("Geburtstag");
panel.add(geburtstag_bezeichnung);
// Label E-Mail
email_bezeichnung = new JLabel();
email_bezeichnung.setBounds(390, 90, 120, 30);
email_bezeichnung.setVisible(false);
email_bezeichnung.setText("E-Mail");
panel.add(email_bezeichnung);
// Label Passwort
passwort_bezeichnung = new JLabel();
passwort_bezeichnung.setBounds(390, 130, 120, 30);
passwort_bezeichnung.setVisible(false);
passwort_bezeichnung.setText("Passwort");
panel.add(passwort_bezeichnung);
/**
* Buttons
*/
// Button registrieren
registrieren = new JButton("Registrieren");
registrieren.setLocation(200, 320);
registrieren.setSize(120, 50);
registrieren.setVisible(true);
registrieren.addActionListener(h);
panel.add(registrieren);
// Button login
login = new JButton("Login");
login.setLocation(350, 320);
login.setSize(120, 50);
login.setVisible(true);
login.addActionListener(h);
panel.add(login);
// Button registrieren best�tigen
registrierenBestätigen = new JButton("Registrieren");
registrierenBestätigen.setLocation(390, 350);
registrierenBestätigen.setSize(120, 50);
registrierenBestätigen.setVisible(false);
registrierenBestätigen.addActionListener(r);
panel.add(registrierenBestätigen);
/**
* Textfields
*/
// Textfield Username
username = new JTextField("", 20);
username.setBounds(150, 50, 120, 30);
username.setVisible(false);
panel.add(username);
// Textfield Vorname
vorname = new JTextField("", 20);
vorname.setBounds(150, 90, 120, 30);
vorname.setVisible(false);
panel.add(vorname);
// Textfield Nachname
nachname = new JTextField("", 20);
nachname.setBounds(150, 130, 120, 30);
nachname.setVisible(false);
panel.add(nachname);
// Textfield Geburtstag
geburtstag = new JFormattedTextField(new SimpleDateFormat("dd.MM.yyyy"));
geburtstag.setValue(new java.util.Date());
geburtstag.setBounds(475, 90, 120, 30);
geburtstag.setVisible(false);
panel.add(geburtstag);
// Textfield E-Mail
email = new JTextField("", 25);
email.setBounds(475, 50, 120, 30);
email.setVisible(false);
panel.add(email);
// Passwortfield Passwort
passwort = new JPasswordField("", 20);
passwort.setBounds(475, 130, 120, 30);
passwort.setVisible(false);
panel.add(passwort);
}
}
-
-
-
空指针异常表示您试图对当前设置为null
的变量进行操作,而不是指向对象的实例。此异常最常见的形式是
Object myObject = ...;
// for whatever reason, myObject = null
myObject.someMethod();
在第三行中,当调用myObject
的someMethod()
方法时,运行时必须首先找到myObject
变量引用的对象。如果myObject
未引用有效实例,则运行时将无法定位并执行someMethod()
。这是一种错误情况,定义的解决方案是抛出NullPointerException
在代码中,很难判断是什么导致抛出了NullPointerException
。通过打印或以其他方式显示异常的堆栈跟踪,您可以轻松地完成这项工作。堆栈跟踪将指向发生空指针取消引用的特定文件和代码行
查看整个堆栈跟踪非常重要。您可能会发现空指针取消引用发生在您调用的方法中,而不是在您自己的代码中。这意味着您可能传递了一个空对象。或者您传递了一个对象,其中一个方法或可访问插槽包含空值,而被调用的方法依赖于此值。通过阅读堆栈跟踪,您将能够发现调用的代码的最后一行。然后,您可以决定是否调查您传递的变量(例如在调试器中检查它们的值,或者将它们的值打印到System.out),或者是否要尝试查找正在调用的代码的源代码,如果可用,则手动回溯以确定错误发生的位置
您还可能会发现抛出异常的行是不明确的-仅读取它,可能有几个导致异常的潜在原因,如以下代码中所示
myObject.method1().method2().method3();
。。。以下任一情况可能导致异常:
*myObject可能为空
*myObject.method1()的返回值可能为空
*myObject.method1().method2()的返回值可能为空
在这种情况下,有两种简单的方法进行调查。首先,您可以在调试器中运行代码,并使用调试器来确定哪个变量无法取消引用。其次,您可以重新构造代码,以便调试更容易
result1 = myObject.method1();
result2 = myObject.method2();
myObject.method3();
正确的方法取决于您的团队、您的编码标准、正在重构的代码的可读性,以及本答案范围之外的许多其他考虑因素。如果是这样,则很可能不是JTextfield:
GUI.username.getText()
您没有给我们提供太多的信息,但是根据上面的代码,我猜您有一个名为GUI
的变量,该变量的公共属性名为username
,您忘记了对其执行类似操作:
GUI.username=用户名代码>
如果未将GUI.username
设置为JTextfield,则对其进行的任何方法调用都将抛出NullPointerException
另外,在准备好的语句中,不需要在?
周围加引号。事实上,最好不要这样做,因为prepareStatement
应该由特定于供应商的驱动程序来处理。这很好:
插入到Benutzer('Benutername','Vorname','Nachname','E-Mail')值(?,,,,,?)
这将把所有的责任推到MS Access JDBC驱动程序上。1)与NPE无关,请说明为什么username.setVisible(false);2、为了更好的帮助,尽快发布SSCCE?简短、可运行、可编译,您确定pstm=conn.prepareStatement(sql)
返回有效的PreparedStatement
?这可能是另一个问题。但是首先我必须知道它为什么是空指针如果返回的语句是null
,那么对这个对象的任何调用都会导致NPE;这会给你很好地指出问题的行号。你是怎么说的?不,它引用了我的主类我不是指类引用而是对已创建对象的引用你能准确地解释一下吗?很抱歉,我是java GUI的初学者,我的意思是变量'GUI'为空,因为您没有引用GUI对象,对象可以是一个框架,它被个人化了,也许您可以给出更多代码来显示'GUI'变量是如何工作的inizalized@it没用。。。但我现在有了全部代码。现在请看一下。谢谢,我知道你的意思。但是ca