Exception in thread “AWT-EventQueue-0“ java.lang.NullPointerException

昨天刚考完试,没想到考的刚好是我考前做的一道题,也刚好那时还遗留了一个错误,结果我照着我做过的做完之后,就剩下那个报错了,搞了大概40分钟之后,还是没有做出来,最后,在我们班学委的帮助下,总算是解决了,希望能对大家有帮助,报错如下:

Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException: Cannot invoke “javax.swing.JComboBox.getSelectedItem()” because “this.bookType” is null
at View.ShowFrame.AddBook(ShowFrame.java:184)
at View.ShowFrame 2. a c t i o n P e r f o r m e d ( S h o w F r a m e . j a v a : 128 ) a t j a v a . d e s k t o p / j a v a x . s w i n g . A b s t r a c t B u t t o n . f i r e A c t i o n P e r f o r m e d ( A b s t r a c t B u t t o n . j a v a : 1967 ) a t j a v a . d e s k t o p / j a v a x . s w i n g . A b s t r a c t B u t t o n 2.actionPerformed(ShowFrame.java:128) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967) at java.desktop/javax.swing.AbstractButton 2.actionPerformed(ShowFrame.java:128)atjava.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)atjava.desktop/javax.swing.AbstractButtonHandler.actionPerformed(AbstractButton.java:2308)
at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6614)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342)
at java.desktop/java.awt.Component.processEvent(Component.java:6379)
at java.desktop/java.awt.Container.processEvent(Container.java:2263)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4990)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4919)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4548)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4489)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2769)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue 4. r u n ( E v e n t Q u e u e . j a v a : 715 ) a t j a v a . b a s e / j a v a . s e c u r i t y . A c c e s s C o n t r o l l e r . d o P r i v i l e g e d ( A c c e s s C o n t r o l l e r . j a v a : 391 ) a t j a v a . b a s e / j a v a . s e c u r i t y . P r o t e c t i o n D o m a i n 4.run(EventQueue.java:715) at java.base/java.security.AccessController.doPrivileged(AccessController.java:391) at java.base/java.security.ProtectionDomain 4.run(EventQueue.java:715)atjava.base/java.security.AccessController.doPrivileged(AccessController.java:391)atjava.base/java.security.ProtectionDomainJavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
at java.desktop/java.awt.EventQueue 5. r u n ( E v e n t Q u e u e . j a v a : 743 ) a t j a v a . b a s e / j a v a . s e c u r i t y . A c c e s s C o n t r o l l e r . d o P r i v i l e g e d ( A c c e s s C o n t r o l l e r . j a v a : 391 ) a t j a v a . b a s e / j a v a . s e c u r i t y . P r o t e c t i o n D o m a i n 5.run(EventQueue.java:743) at java.base/java.security.AccessController.doPrivileged(AccessController.java:391) at java.base/java.security.ProtectionDomain 5.run(EventQueue.java:743)atjava.base/java.security.AccessController.doPrivileged(AccessController.java:391)atjava.base/java.security.ProtectionDomainJavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

接下来呈上我敲的代码:

package Model;

public class Books {
private int bookId;
private String bookName;
private String bookAuthor;
private String bookPublish;
private double bookPrice;
private String bookType;
public int getBookId() {
return bookId;
}
public void setBookId(int bookId) {
this.bookId = bookId;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getBookAuthor() {
return bookAuthor;
}
public void setBookAuthor(String bookAuthor) {
this.bookAuthor = bookAuthor;
}
public String getBookPublish() {
return bookPublish;
}
public void setBookPublish(String bookPublish) {
this.bookPublish = bookPublish;
}
public double getBookPrice() {
return bookPrice;
}
public void setBookPrice(double bookPrice) {
this.bookPrice = bookPrice;
}
public String getBookType() {
return bookType;
}
public void setBookType(String bookType) {
this.bookType = bookType;
}

}

package Util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class BUtil {
private static final String DRIVER = “com.mysql.jdbc.Driver”;
private static final String URL = “jdbc:mysql://localhost:3306/library_dbuseUnicode=true&characterEncoding=UTF-8”;
private static final String USER = “root”;
private static final String PWD = “666918”;

static {
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException var1) {
var1.printStackTrace();
}

}

public static Connection getConnection() throws Exception {
return DriverManager.getConnection(URL, USER, PWD);
}

public static void close(ResultSet rs, PreparedStatement prep, Connection conn) throws Exception {
if (rs != null) {
rs.close();
}

if (prep != null) {
prep.close();
}

if (conn != null) {
conn.close();
}

}
}

package Dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

import Model.Books;
import Util.BUtil;

public class BaseDao {
public ArrayList getBooks() {
ArrayList books=new ArrayList();
ResultSet rs=null;
PreparedStatement prep=null;
Connection conn=null;
try {
conn=BUtil.getConnection();
String sql=“select * from tb_book”;
prep=conn.prepareStatement(sql);
rs=prep.executeQuery();
while (rs.next()) {
Books book=new Books();
book.setBookId(rs.getInt(“bookId”));
book.setBookName(rs.getString(“bookName”));
book.setBookAuthor(rs.getString(“bookAuthor”));
book.setBookPublish(rs.getString(“bookPublish”));
book.setBookPrice(rs.getDouble(“bookPrice”));
book.setBookType(rs.getString(“bookType”));
books.add(book);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
BUtil.close(rs, prep, conn);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return books;
}

public int addBook(Books books) {
int result=0;
PreparedStatement prep=null;
Connection conn=null;
try {
conn=BUtil.getConnection();
String sql=“insert into tb_book(bookName,bookAuthor,bookPublish,bookPrice,bookType) values (,)”;
prep=conn.prepareStatement(sql);
prep.setString(1, books.getBookName());
prep.setString(2, books.getBookAuthor());
prep.setString(3, books.getBookPublish());
prep.setDouble(4, books.getBookPrice());
prep.setString(5, books.getBookType());
result=prep.executeUpdate();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
BUtil.close(null, prep, conn);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return result;

}

public int delBook(int bookId) {
int result=0;
PreparedStatement prep=null;
Connection conn=null;
try {
conn=BUtil.getConnection();
String sql=“delete from tb_book where bookId=”;
prep=conn.prepareStatement(sql);
prep.setInt(1, bookId);
result=prep.executeUpdate();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
BUtil.close(null, prep, conn);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return result;
}
}

package View;

import java.awt.BorderLayout;

import java.awt.EventQueue;
import java.util.ArrayList;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

import Dao.BaseDao;
import Model.Books;

import javax.swing.JButton;
import javax.swing.DefaultComboBoxModel;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class ShowFrame extends JFrame {
public DefaultTableModel dtm;
private JPanel contentPane;
private JTextField bookName;
private JTextField bookAuthor;
private JTextField bookPublish;
private JTextField bookPrice;
private JComboBox bookType;
private JTable table;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
ShowFrame frame = new ShowFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public ShowFrame() {
setTitle(“图书信息管理系统”);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 621, 313);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);

JLabel lblNewLabel = new JLabel(“图书名称:”);
lblNewLabel.setBounds(23, 10, 89, 22);
contentPane.add(lblNewLabel);

JLabel lblNewLabel_1 = new JLabel(“作者:”);
lblNewLabel_1.setBounds(23, 40, 89, 22);
contentPane.add(lblNewLabel_1);

JLabel lblNewLabel_2 = new JLabel(“出版社:”);
lblNewLabel_2.setBounds(23, 70, 89, 22);
contentPane.add(lblNewLabel_2);

JLabel lblNewLabel_3 = new JLabel(“价格:”);
lblNewLabel_3.setBounds(23, 102, 89, 22);
contentPane.add(lblNewLabel_3);

JLabel lblNewLabel_4 = new JLabel(“图书类型:”);
lblNewLabel_4.setBounds(23, 138, 89, 22);
contentPane.add(lblNewLabel_4);

bookName = new JTextField();
bookName.setBounds(122, 11, 190, 22);
contentPane.add(bookName);
bookName.setColumns(10);

bookAuthor = new JTextField();
bookAuthor.setBounds(122, 41, 190, 22);
contentPane.add(bookAuthor);
bookAuthor.setColumns(10);

bookPublish = new JTextField();
bookPublish.setBounds(122, 71, 190, 22);
contentPane.add(bookPublish);
bookPublish.setColumns(10);

bookPrice = new JTextField();
bookPrice.setBounds(122, 103, 190, 22);
contentPane.add(bookPrice);
bookPrice.setColumns(10);

JComboBox bookType = new JComboBox();
bookType.setModel(new DefaultComboBoxModel(new String[] {“小说”, “玄幻”, “文学”, “历史”, “经济”}));
bookType.setBounds(122, 138, 190, 22);
contentPane.add(bookType);

JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(322, 10, 285, 180);
contentPane.add(scrollPane);

table = new JTable();
table.setModel(new DefaultTableModel(
new Object[][] {
},
new String[] {
“编号”, “名称”, “作者”, “出版社”, “价格”, “类型”
}
));
scrollPane.setViewportView(table);

JButton btnNewButton = new JButton(“添加”);
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
AddBook(e);
}
});
btnNewButton.setBounds(48, 209, 97, 23);
contentPane.add(btnNewButton);

JButton btnNewButton_1 = new JButton(“清空”);
btnNewButton_1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Clear();
}
});
btnNewButton_1.setBounds(192, 209, 97, 23);
contentPane.add(btnNewButton_1);

JButton btnNewButton_2 = new JButton(“删除”);
btnNewButton_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
DelBook(e);
}
});
btnNewButton_2.setBounds(480, 209, 97, 23);
contentPane.add(btnNewButton_2);
dtm=(DefaultTableModel)table.getModel();
search();
}

protected void DelBook(ActionEvent e) {
// TODO Auto-generated method stub
int num=JOptionPane.showConfirmDialog(null, “确定删除吗”);
if (num==0) {
int bookId=(int)(dtm.getValueAt(this.table.getSelectedRow(), 0));
BaseDao bd=new BaseDao();
int result=bd.delBook(bookId);
if (result>0) {
JOptionPane.showMessageDialog(null, “删除成功”);
search();
}
}

}

protected void Clear() {
// TODO Auto-generated method stub
this.bookName.setText(“”);
this.bookAuthor.setText(“”);
this.bookPublish.setText(“”);
this.bookPrice.setText(“”);
}

protected void AddBook(ActionEvent e) {
// TODO Auto-generated method stub
String bookName=this.bookName.getText();
String bookAuthor=this.bookAuthor.getText();
String bookPublish=this.bookPublish.getText();
double bookPrice=Double.parseDouble(this.bookPrice.getText());
String bookType=this.bookType.getSelectedItem().toString();

Books books=new Books();
books.setBookName(bookName);
books.setBookAuthor(bookAuthor);
books.setBookPublish(bookPublish);
books.setBookPrice(bookPrice);
books.setBookType(bookType);

BaseDao bd=new BaseDao();
int result=bd.addBook(books);
if (result>0) {
JOptionPane.showMessageDialog(null, “添加图书信息成功!”);
} else {
JOptionPane.showMessageDialog(null, “填写信息不完整,请认真检查!”);
}
}

public void search() {
dtm.setRowCount(0);
BaseDao bd=new BaseDao();
ArrayList books=bd.getBooks();
for (Books book : books) {
Vector v=new Vector();
v.add(book.getBookId());
v.add(book.getBookName());
v.add(book.getBookAuthor());
v.add(book.getBookPublish());
v.add(book.getBookPrice());
v.add(book.getBookType());
dtm.addRow(v);
}
}
}

最后把里的JComboBox删掉之后,就信息添加成功了,究其原因,可能是前面已经定义了属性,后面实例化没有赋值,所以就报了空指针异常。

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

猜你喜欢

转载自blog.csdn.net/m0_67392273/article/details/126100160