有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

eclipse错误:java线程“awteventque0”中出现异常。lang.NullPointerException

我遇到了null的问题,我以前实现了相同的代码,它工作得很好,但在添加其他代码后它就不工作了

这是错误的一部分:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at manager.flyer$13.mouseClicked(flyer.java:751)
    at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270)
    at java.awt.Component.processMouseEvent(Component.java:6536)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6298)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4711)

以及显示该错误的代码部分:

JButton btnNewButton_4 = new JButton("Add All");
           btnNewButton_4.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {

            int columnContainingPlanets =1 ;
            for (int index =0 ; index < tableModel.getRowCount(); index ++){
            if (tableModel.getValueAt(index, columnContainingPlanets).equals("")) {
            JOptionPane.showMessageDialog(panel_4, "Please Enter Discount Amount For All Items");

            return; }}

我尝试将columnContainingPlanets=1替换为columnContainingPlanets=0 但也有错误:java.lang.NullPointerException

如果有人知道解决方案,我会很高兴,因为错误突然出现,而且效果很好


共 (1) 个答案

  1. # 1 楼答案

    我们无法为您调试NullPointerException。您是唯一可以访问您的代码和应用程序中的数据的人。所以你是唯一能解决这个问题的人

    一些有助于调试的指针:

    1. 为什么要创建一个变量(columnContainingPlanets)作为getValueAt(…)中的索引方法这不会造成问题,但似乎有点不必要

    2. 不要在同一行代码中编写多个语句。这使得确定哪个变量为空变得更加困难。在您的例子中,我可以看到“tableModel”可以为null,或者从tableModel返回的值可以为null。在知道哪个值为null之前,您无法解决该问题

    3. 无法在if语句中测试字符串“”。getValueAt()方法返回一个对象。对象不是字符串

    因此,您可以对代码进行如下重构:

    for (int index =0 ; index < tableModel.getRowCount(); index ++)
    {
        Object value = tableModel.getValueAt(index, 1);
    
        if (value.toString().equals("")) 
        {
            JOptionPane.showMessageDialog(panel_4, "Please Enter Discount Amount For All Items");
    
            return; 
        }
    }
    

    现在,NullPointerException中给出的行号将准确地告诉您哪个变量为null。要么:

    1. “tableModel”为空(这会导致您在引用表格模型时遇到问题,或者

    2. “值”为空(在这种情况下,表模型中包含的数据有问题。

    最后,不要在JButton上使用MouseListener。相反,您应该向JButton添加一个ActionListener。阅读Swing教程中关于How to Use Buttons的部分。下载演示代码并播放示例