求高人道破玄机!!!package xiaomoimport java.sql.*import java.awt.BorderLayoutimport java.awt.Colo
求高人道破玄机!!!
package xiaomo; import java.sql.*; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; class BuildButton extends JDialog{ static Connection con; static PreparedStatement sql; public BuildButton(MessageFace messageface,String title){ super(messageface,"Please finish writing .",true); //利用箱式布局管理器设计Name栏mb //Birthday标签 Box IDBox = Box.createHorizontalBox(); IDBox.add(Box.createHorizontalStrut(30)); JLabel IDLabel = new JLabel("ID:"); IDBox.add(IDLabel); IDBox.add(Box.createHorizontalStrut(20)); final JTextField IDTextField = new JTextField(30); IDBox.add(IDTextField); IDBox.add(Box.createHorizontalStrut(200)); //Name标签 Box NameBox = Box.createHorizontalBox(); //container.add(NameBox,BorderLayout.NORTH); NameBox.add(Box.createHorizontalStrut(30)); JLabel NameLabel = new JLabel("NAME:"); NameBox.add(NameLabel); NameBox.add(Box.createHorizontalStrut(20)); final JTextField NameTextField = new JTextField(30); NameBox.add(NameTextField); NameBox.add(Box.createHorizontalStrut(200)); //Number标签 Box NumberBox = Box.createHorizontalBox(); NumberBox.add(Box.createHorizontalStrut(30)); JLabel NumberLabel = new JLabel("MobilePhone:"); NumberBox.add(NumberLabel); NumberBox.add(Box.createHorizontalStrut(20)); final JTextField NumberTextField = new JTextField(30); NumberBox.add(NumberTextField); NumberBox.add(Box.createHorizontalStrut(200)); //QQNumber标签 Box QQNumberBox = Box.createHorizontalBox(); QQNumberBox.add(Box.createHorizontalStrut(30)); JLabel QQNumberLabel = new JLabel("QQNumber:"); QQNumberBox.add(QQNumberLabel); QQNumberBox.add(Box.createHorizontalStrut(20)); final JTextField QQNumberTextField = new JTextField(30); QQNumberBox.add(QQNumberTextField); QQNumberBox.add(Box.createHorizontalStrut(200)); //Company标签 Box CompanyBox = Box.createHorizontalBox(); CompanyBox.add(Box.createHorizontalStrut(30)); JLabel CompanyLabel = new JLabel("Company:"); CompanyBox.add(CompanyLabel); CompanyBox.add(Box.createHorizontalStrut(20)); final JTextField CompanyTextField = new JTextField(30); CompanyBox.add(CompanyTextField); CompanyBox.add(Box.createHorizontalStrut(200)); JButton b1 = new JButton("Finish"); JButton b2 = new JButton("Continue"); /* * 要想使得JPanel面板划分窗体空间, * 就必须使用网格布局管理器GridLayout和边界布局管理器BorderLayout * 而且在添加组件是要注意: * 先在container里对面板进行整体设置 * 而后在个面板中设置GridLayout * 最后再添加到container中... */ //对container进行设置 Container container = getContentPane(); container.setLayout(new GridLayout(6,2,8,9)); setBounds(900, 50, 415, 220); container.setBackground(Color.pink); //对面板(容器的一种)进行设置 JPanel p1 = new JPanel(new GridLayout(1,2,8,9));//行,列,水平,垂直 p1.setBackground(Color.pink); JPanel p2 = new JPanel(new GridLayout(1,2,8,9)); p2.setBackground(Color.pink); JPanel p3 = new JPanel(new GridLayout(1,2,8,9)); p3.setBackground(Color.pink); JPanel p4 = new JPanel(new GridLayout(1,2,8,9)); p4.setBackground(Color.pink); JPanel p5 = new JPanel(new GridLayout(1,2,8,9)); p5.setBackground(Color.pink); JPanel p6 = new JPanel(new GridLayout(1,2)); //将组件添加到面板,再添加到container p1.add(IDBox,BorderLayout.NORTH); p1.add(IDTextField); p2.add(NameBox,BorderLayout.NORTH); p2.add(NameTextField); p3.add(NumberBox,BorderLayout.NORTH); p3.add(NumberTextField); p4.add(QQNumberBox,BorderLayout.NORTH); p4.add(QQNumberTextField); p5.add(CompanyBox,BorderLayout.NORTH); p5.add(CompanyTextField); p6.add(b1,BorderLayout.NORTH); p6.add(b2,BorderLayout.NORTH); container.add(p1); container.add(p2); container.add(p3); container.add(p4); container.add(p5); container.add(p6); b1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent arg0){ try { sql = con.prepareStatement("insert into xiaomotable" + "values(?,?,?,?,?)"); sql.setString(1, IDTextField.getText()); sql.setString(2, NameTextField.getText()); sql.setString(3, NumberTextField.getText()); sql.setString(4, QQNumberTextField.getText()); sql.setString(5, CompanyTextField.getText()); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); } }
此代码的错误反馈:
引用 Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at xiaomo.BuildButton$1.actionPerformed(BuildButton.java:149) 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.pumpEventsForFilter(Unknown Source) at java.awt.WaitDispatchSupport$2.run(Unknown Source) at java.awt.WaitDispatchSupport$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.awt.WaitDispatchSupport.enter(Unknown Source) at java.awt.Dialog.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at java.awt.Window.setVisible(Unknown Source) at java.awt.Dialog.setVisible(Unknown Source) at xiaomo.MessageFace$1.actionPerformed(MessageFace.java:70) 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)
[解决办法] 你都这个直接调用 con 肯定NULL 的 。你写个方法获取连接,ruturn 一个 con 连接 。用的时候先赋值。