• 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删掉之后,就信息添加成功了,究其原因,可能是前面已经定义了属性,后面实例化没有赋值,所以就报了空指针异常。

  • 相关阅读:
    算法|最大堆、最小堆和堆排序的实现(JavaScript)
    EasyCVR授权到期页面无法登录,该如何解决?
    Jmeter配置脚本录制进行抓包并快速分析、定位接口问题
    分享500道我在“金九银十”收集的Java架构面试题
    【牛客 - 剑指offer】JZ44 数字序列中某一位的数字 Java实现
    win10手机投屏到电脑的操作方法
    JAVA设计模式解决支付问题
    基于STM32单片机光照检测控制系统-proteus仿真-源程序
    在线考试组卷Word文档导出|废纸篓|支持搜索组员查看练习情况|官网上线
    vue2.0动态数据表格
  • 原文地址:https://blog.csdn.net/m0_67403073/article/details/126012744