我的程序老是报空指针异常
NULLPOINTEXCEPTION
一般来说怎样才能精确定位空指针异常啊!!!
Frame类:
public class ExamFrame extends JFrame {
private void jbInit() throws Exception {
mainPane = (JPanel) getContentPane();
mainPane.setLayout(null);
this.setJMenuBar(jmenu);
setSize(new Dimension(377, 410));
setTitle("productinfo");
jlb_an.setHorizontalAlignment(SwingConstants.RIGHT);
jlb_an.setText("按");
jlb_an.setBounds(new Rectangle(23, 19, 21, 22));
jcomb_selectclass.setBounds(new Rectangle(52, 19, 108, 23));
jcomb_selectclass.addItem("商品名称");
jcomb_selectclass.addItem("商品价格");
jcomb_selectclass.addItem("折扣价");
jcomb_selectclass.addItem("剩余数量");
jcomb_sort.setBounds(new Rectangle(186, 19, 61, 22));
jcomb_sort.addItem("升序");
jcomb_sort.addItem("降序");
jbt_select.setBounds(new Rectangle(273, 19, 73, 24));
jbt_select.setText("查 询");
jbt_select.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String selectclass = jcomb_selectclass.getSelectedItem().
toString(); String sort = jcomb_sort.getSelectedItem().toString(); info = edao.searchall(selectclass, sort);
rinfo = (ArrayList) info.get(0); if (info.isEmpty()) {
JOptionPane.showMessageDialog(mainPane, "没有找到", "提示",
JOptionPane.
INFORMATION_MESSAGE);
} else {
jbt_shang.setEnabled(false);
jtxta_productname.setText(rinfo.get(0).toString());
jtxt_price.setText(rinfo.get(1).toString());
jtxt_zhekou.setText(rinfo.get(2).toString());
jtxt_rest.setText(rinfo.get(3).toString());
jtxta_jianjie.setText(rinfo.get(4).toString());
}
}
});
jtxta_productname.setBorder(BorderFactory.createLineBorder(Color.black));
jtxta_productname.setBounds(new Rectangle(81, 54, 223, 65));
jlb_productname.setHorizontalAlignment(SwingConstants.LEFT);
jlb_productname.setText("商品名称:");
jlb_productname.setBounds(new Rectangle(19, 54, 57, 24));
jtxt_price.setEditable(false);
jtxt_price.setBounds(new Rectangle(81, 133, 223, 23));
jlb_price.setText("商品价格:");
jlb_price.setBounds(new Rectangle(19, 133, 63, 22));
jtxt_zhekou.setEditable(false);
jtxt_zhekou.setBounds(new Rectangle(81, 163, 223, 24));
jlb_zhekou.setToolTipText("");
jlb_zhekou.setText("折 扣 价:");
jlb_zhekou.setBounds(new Rectangle(19, 163, 63, 26));
jlb_rest.setText("剩余数量:");
jlb_rest.setBounds(new Rectangle(19, 197, 63, 28));
jtxt_rest.setEditable(false);
jtxt_rest.setBounds(new Rectangle(81, 197, 223, 24));
jtxta_jianjie.setBorder(BorderFactory.createLineBorder(Color.black));
jtxta_jianjie.setBounds(new Rectangle(81, 233, 223, 80));
jlb_jianjie.setText("商品简介:");
jlb_jianjie.setBounds(new Rectangle(19, 233, 56, 22));
jlb_yuan1.setText("元");
jlb_yuan1.setBounds(new Rectangle(312, 133, 36, 24));
jlb_yuan2.setText("元");
jlb_yuan2.setBounds(new Rectangle(312, 163, 39, 23));
jlb_jian.setText("件");
jlb_jian.setBounds(new Rectangle(312, 197, 38, 27));
jbt_shang.setBounds(new Rectangle(84, 328, 73, 18));
jbt_shang.setFont(new java.awt.Font("宋体", Font.PLAIN, 11));
jbt_shang.setText("上一个");
jbt_shang.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (info.indexOf(rinfo) == 0) {
jbt_shang.setEnabled(false);
} else {
jbt_shang.setEnabled(true); }
}
});
jbt_xia.setBounds(new Rectangle(215, 328, 73, 18));
jbt_xia.setFont(new java.awt.Font("宋体", Font.PLAIN, 11));
jbt_xia.setText("下一个");
jbt_xia.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (info.indexOf(rinfo) == (info.size()-1)) {
jbt_xia.setEnabled(false);
} else {
jbt_xia.setEnabled(true); }
}
}); jmenu.setFont(new java.awt.Font("Tahoma", Font.PLAIN, 13));
jMenu1.setFont(new java.awt.Font("宋体", Font.BOLD, 13));
jMenu1.setHorizontalAlignment(SwingConstants.CENTER);
jMenu1.setHorizontalTextPosition(SwingConstants.CENTER);
jMenu1.setText("系 统");
jmenu_exit.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
jmenu_exit.setText("退出");
jmenu_exit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ExamFrame.this.dispose();
}
});
mainPane.add(jlb_an);
mainPane.add(jcomb_selectclass);
mainPane.add(jcomb_sort);
mainPane.add(jbt_select);
mainPane.add(jtxta_productname);
mainPane.add(jlb_productname);
mainPane.add(jtxt_price);
mainPane.add(jlb_price);
mainPane.add(jtxt_zhekou);
mainPane.add(jlb_zhekou);
mainPane.add(jtxt_rest);
mainPane.add(jlb_rest);
mainPane.add(jtxta_jianjie);
mainPane.add(jlb_jianjie);
mainPane.add(jlb_yuan1);
mainPane.add(jbt_shang);
mainPane.add(jlb_yuan2);
mainPane.add(jlb_jian);
mainPane.add(jbt_xia);
jmenu.add(jMenu1);
jMenu1.add(jmenu_exit);
} public static void main(String[] args) {
new ExamFrame();
}
}
连接数据库类:(sql数据库)
public class ExamDAO {
private Connection con;
private PreparedStatement pstat;
private ResultSet rs;
public ExamDAO() {
} public Vector searchall(String leixing, String sort) {
Vector v = new Vector();
String xuanzhe = "";
String selectsort = "asc";
if (leixing.equals("商品名称")) {
xuanzhe = "productname";
} else if (leixing.equals("商品价格")) {
xuanzhe = "price";
} else if (leixing.equals("折扣价")) {
xuanzhe = "discount";
} else {
xuanzhe = "rest";
}
if (sort.equals("降序")) {
selectsort = "desc";
}
String sql = "select * from product order by " + xuanzhe + " " +
selectsort;
try {
pstat = con.prepareStatement(sql);
rs = pstat.executeQuery();
while(rs.next()) {
Vector r = new Vector();
r.add(rs.getString(2));
r.add(rs.getDouble(3));
r.add(rs.getDouble(4));
r.add(rs.getInt(5));
r.add(rs.getString(6));
v.add(r);
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
close();
} return v;
}
NULLPOINTEXCEPTION
一般来说怎样才能精确定位空指针异常啊!!!
Frame类:
public class ExamFrame extends JFrame {
private void jbInit() throws Exception {
mainPane = (JPanel) getContentPane();
mainPane.setLayout(null);
this.setJMenuBar(jmenu);
setSize(new Dimension(377, 410));
setTitle("productinfo");
jlb_an.setHorizontalAlignment(SwingConstants.RIGHT);
jlb_an.setText("按");
jlb_an.setBounds(new Rectangle(23, 19, 21, 22));
jcomb_selectclass.setBounds(new Rectangle(52, 19, 108, 23));
jcomb_selectclass.addItem("商品名称");
jcomb_selectclass.addItem("商品价格");
jcomb_selectclass.addItem("折扣价");
jcomb_selectclass.addItem("剩余数量");
jcomb_sort.setBounds(new Rectangle(186, 19, 61, 22));
jcomb_sort.addItem("升序");
jcomb_sort.addItem("降序");
jbt_select.setBounds(new Rectangle(273, 19, 73, 24));
jbt_select.setText("查 询");
jbt_select.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String selectclass = jcomb_selectclass.getSelectedItem().
toString(); String sort = jcomb_sort.getSelectedItem().toString(); info = edao.searchall(selectclass, sort);
rinfo = (ArrayList) info.get(0); if (info.isEmpty()) {
JOptionPane.showMessageDialog(mainPane, "没有找到", "提示",
JOptionPane.
INFORMATION_MESSAGE);
} else {
jbt_shang.setEnabled(false);
jtxta_productname.setText(rinfo.get(0).toString());
jtxt_price.setText(rinfo.get(1).toString());
jtxt_zhekou.setText(rinfo.get(2).toString());
jtxt_rest.setText(rinfo.get(3).toString());
jtxta_jianjie.setText(rinfo.get(4).toString());
}
}
});
jtxta_productname.setBorder(BorderFactory.createLineBorder(Color.black));
jtxta_productname.setBounds(new Rectangle(81, 54, 223, 65));
jlb_productname.setHorizontalAlignment(SwingConstants.LEFT);
jlb_productname.setText("商品名称:");
jlb_productname.setBounds(new Rectangle(19, 54, 57, 24));
jtxt_price.setEditable(false);
jtxt_price.setBounds(new Rectangle(81, 133, 223, 23));
jlb_price.setText("商品价格:");
jlb_price.setBounds(new Rectangle(19, 133, 63, 22));
jtxt_zhekou.setEditable(false);
jtxt_zhekou.setBounds(new Rectangle(81, 163, 223, 24));
jlb_zhekou.setToolTipText("");
jlb_zhekou.setText("折 扣 价:");
jlb_zhekou.setBounds(new Rectangle(19, 163, 63, 26));
jlb_rest.setText("剩余数量:");
jlb_rest.setBounds(new Rectangle(19, 197, 63, 28));
jtxt_rest.setEditable(false);
jtxt_rest.setBounds(new Rectangle(81, 197, 223, 24));
jtxta_jianjie.setBorder(BorderFactory.createLineBorder(Color.black));
jtxta_jianjie.setBounds(new Rectangle(81, 233, 223, 80));
jlb_jianjie.setText("商品简介:");
jlb_jianjie.setBounds(new Rectangle(19, 233, 56, 22));
jlb_yuan1.setText("元");
jlb_yuan1.setBounds(new Rectangle(312, 133, 36, 24));
jlb_yuan2.setText("元");
jlb_yuan2.setBounds(new Rectangle(312, 163, 39, 23));
jlb_jian.setText("件");
jlb_jian.setBounds(new Rectangle(312, 197, 38, 27));
jbt_shang.setBounds(new Rectangle(84, 328, 73, 18));
jbt_shang.setFont(new java.awt.Font("宋体", Font.PLAIN, 11));
jbt_shang.setText("上一个");
jbt_shang.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (info.indexOf(rinfo) == 0) {
jbt_shang.setEnabled(false);
} else {
jbt_shang.setEnabled(true); }
}
});
jbt_xia.setBounds(new Rectangle(215, 328, 73, 18));
jbt_xia.setFont(new java.awt.Font("宋体", Font.PLAIN, 11));
jbt_xia.setText("下一个");
jbt_xia.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (info.indexOf(rinfo) == (info.size()-1)) {
jbt_xia.setEnabled(false);
} else {
jbt_xia.setEnabled(true); }
}
}); jmenu.setFont(new java.awt.Font("Tahoma", Font.PLAIN, 13));
jMenu1.setFont(new java.awt.Font("宋体", Font.BOLD, 13));
jMenu1.setHorizontalAlignment(SwingConstants.CENTER);
jMenu1.setHorizontalTextPosition(SwingConstants.CENTER);
jMenu1.setText("系 统");
jmenu_exit.setFont(new java.awt.Font("宋体", Font.BOLD, 12));
jmenu_exit.setText("退出");
jmenu_exit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ExamFrame.this.dispose();
}
});
mainPane.add(jlb_an);
mainPane.add(jcomb_selectclass);
mainPane.add(jcomb_sort);
mainPane.add(jbt_select);
mainPane.add(jtxta_productname);
mainPane.add(jlb_productname);
mainPane.add(jtxt_price);
mainPane.add(jlb_price);
mainPane.add(jtxt_zhekou);
mainPane.add(jlb_zhekou);
mainPane.add(jtxt_rest);
mainPane.add(jlb_rest);
mainPane.add(jtxta_jianjie);
mainPane.add(jlb_jianjie);
mainPane.add(jlb_yuan1);
mainPane.add(jbt_shang);
mainPane.add(jlb_yuan2);
mainPane.add(jlb_jian);
mainPane.add(jbt_xia);
jmenu.add(jMenu1);
jMenu1.add(jmenu_exit);
} public static void main(String[] args) {
new ExamFrame();
}
}
连接数据库类:(sql数据库)
public class ExamDAO {
private Connection con;
private PreparedStatement pstat;
private ResultSet rs;
public ExamDAO() {
} public Vector searchall(String leixing, String sort) {
Vector v = new Vector();
String xuanzhe = "";
String selectsort = "asc";
if (leixing.equals("商品名称")) {
xuanzhe = "productname";
} else if (leixing.equals("商品价格")) {
xuanzhe = "price";
} else if (leixing.equals("折扣价")) {
xuanzhe = "discount";
} else {
xuanzhe = "rest";
}
if (sort.equals("降序")) {
selectsort = "desc";
}
String sql = "select * from product order by " + xuanzhe + " " +
selectsort;
try {
pstat = con.prepareStatement(sql);
rs = pstat.executeQuery();
while(rs.next()) {
Vector r = new Vector();
r.add(rs.getString(2));
r.add(rs.getDouble(3));
r.add(rs.getDouble(4));
r.add(rs.getInt(5));
r.add(rs.getString(6));
v.add(r);
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
close();
} return v;
}
异常信息?
indicate that the code has attempted to cast an object to a subclass of which it is not an instance. For example, the following code generates a ClassCastException:
Object x = new Integer(0);
System.out.println((String)x);