求高人道破玄机!!!

咚咚来了 2013-10-22 11:18:46
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)
...全文
189 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
soyestrellafortuna 2013-10-22
  • 打赏
  • 举报
回复
加断点,debug运行 ,右键----> Inspect
咚咚来了 2013-10-22
  • 打赏
  • 举报
回复
将鼠标指到con出现:




另外驱动已经加好了,数据库连接成功

tony4geek 2013-10-22
  • 打赏
  • 举报
回复
你的 sql = con 这个con 并没有加载驱动实例吧。
soyestrellafortuna 2013-10-22
  • 打赏
  • 举报
回复
加属性和get,set方法试试吧
soyestrellafortuna 2013-10-22
  • 打赏
  • 举报
回复
你的con在connet里是局部变量。要想办法能在其他类中使用才行
咚咚来了 2013-10-22
  • 打赏
  • 举报
回复
可以告诉我怎么调试吗? 谢谢!
的确是con有问题!

soyestrellafortuna 2013-10-22
  • 打赏
  • 举报
回复
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at xiaomo.BuildButton$1.actionPerformed(BuildButton.java:149) 抛错149行,con不为null吗?
快乐的小呆 2013-10-22
  • 打赏
  • 举报
回复
引用 1 楼 u012518874 的回复:
数据库Mysql已连接: 代码如下:
package xiaomo;
import java.sql.Connection;  
import java.sql.DriverManager;  
class connect{  
   public static void main(String args[]){
    String driver = "com.mysql.jdbc.Driver";//驱动程序名  
    String url = "jdbc:mysql://127.0.0.1:3306/xiaomo";  
    String user = "root";	 
    String password = "";	  
    try {         // 加载驱动程序  
    Class.forName(driver);  
    Connection con = DriverManager.getConnection(url, user, password);// 连续数据库  
    System.out.println("数据库连接成功!");
    }catch(Exception e){  
        System.out.println("数据库连接失败!");  
        e.printStackTrace();          
    }  
    
  }  
} 
1.你确定你有xiaomo数据库 2.你确定你数据库用户名为root且没有密码
咚咚来了 2013-10-22
  • 打赏
  • 举报
回复
不是啊, 谢谢
zhuweisyyc 2013-10-22
  • 打赏
  • 举报
回复
sql = con.prepareStatement con是空吧,debug下
soyestrellafortuna 2013-10-22
  • 打赏
  • 举报
回复
con是null,没值
tony4geek 2013-10-22
  • 打赏
  • 举报
回复
IDTextField.getText() 这个是null 不
咚咚来了 2013-10-22
  • 打赏
  • 举报
回复
数据库Mysql已连接:
代码如下:
package xiaomo;
import java.sql.Connection;
import java.sql.DriverManager;
class connect{
public static void main(String args[]){
String driver = "com.mysql.jdbc.Driver";//驱动程序名
String url = "jdbc:mysql://127.0.0.1:3306/xiaomo";
String user = "root";
String password = "";
try { // 加载驱动程序
Class.forName(driver);
Connection con = DriverManager.getConnection(url, user, password);// 连续数据库
System.out.println("数据库连接成功!");
}catch(Exception e){
System.out.println("数据库连接失败!");
e.printStackTrace();
}

}
}
悲剧的程序员 2013-10-22
  • 打赏
  • 举报
回复
引用 14 楼 qin_easy 的回复:
static Connection con; , 没看到你给 con 赋值 。
你都这个直接调用 con 肯定NULL 的 。你写个方法获取连接,ruturn 一个 con 连接 。用的时候先赋值。
悲剧的程序员 2013-10-22
  • 打赏
  • 举报
回复
static Connection con; , 没看到你给 con 赋值 。

58,452

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧