错误:线程中的异常" AWT-EventQueue-0"显示java.lang.NullPointerException

时间:2017-04-20 10:43:48

标签: java eclipse swing interface 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 个答案:

答案 0 :(得分:0)

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

帮助调试的几点建议:

  1. 为什么要创建一个变量(columnContainingPlanets)以用作getValueAt(...)方法中的索引。它不会引起问题,但似乎有点不必要。

  2. 不要在同一行代码中编写多个语句。这使得确定哪个变量为空更难。在你的情况下,我可以看到&#34; tableModel&#34;可以为null,或者从TableModel返回的值可以为null。在您知道哪个值为null之前,您无法解决问题。

  3. 您无法测试String&#34;&#34;在if语句中。 getValueAt()方法返回一个Object。对象不是字符串。

  4. 所以你可能会重构这样的代码:

    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. &#34; tableModel&#34;为null(因此您在引用表模型时遇到问题,或

    2. &#34;价值&#34;为null(在这种情况下,您的表模型中包含的数据存在问题。

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