繁体   English   中英

错误:线程“ AWT-EventQueue-0”中的异常java.lang.NullPointerException

[英]ERROR : Exception in thread “AWT-EventQueue-0” java.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

如果有人知道解决方案,我将很高兴,因为该错误突然出现了,并且效果很好。

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

一些有助于调试的指针:

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

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

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

因此,您可以重组代码,如下所示:

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”为null(导致您在引用表格模型时遇到问题,或者

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

最后,不要在JButton上使用MouseListener 相反,您应该将ActionListener添加到JButton 阅读Swing教程中有关如何使用按钮的部分 下载演示代码并使用示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM