【问题标题】:Casting from JTable Object to int从 JTable 对象转换为 int
【发布时间】:2014-12-20 11:41:21
【问题描述】:

我正在尝试从 JTable 中检索一个值并收到 java.lang.nullpointer 异常。以下行似乎是问题所在。我试图让它获取对象,即 25,并基本上将其转换为 int。由于某种原因,这个简单的任务似乎极其困难或不可能。我查看了另一个存在类似问题的 StackOverflow 用户问题,但他从未得到有效的回复。

错误代码如下: 线程“AWT-EventQueue-0”中的异常 java.lang.NullPointerException 在 Gradebook$5.actionPerformed(Gradebook.java:925)这是循环中的第二行。

注意:我编辑了这篇文章以提供额外的代码。

 for(int i = 0; i < 10; i++){
                myClass[currentClass].getCategoryElement(i).setName((String)categoriesTable.getModel().getValueAt(i, 1));
                myClass[currentClass].getCategoryElement(i).setWeight(Integer.valueOf((String)(categoriesTable.getModel().getValueAt(i, 2))));//THIS LINE IS THE IDENTIFIED PROBLEM
            }

 categoriesTable.setModel(new DefaultTableModel(
        new Object[][] {
            {"1", "Classwork", "20"},
            {"2", "Homework", "20"},
            {"3", "Tests", "20"},
            {"4", "Quizzes", "20"},
            {"5", "Projects", "20"},
            {"6", null, null},
            {"7", null, null},
            {"8", null, null},
            {"9", null, null},
            {"10", null, null},
        },

【问题讨论】:

  • "NullPointerException" 表示这 5 个对象之一为空。如果没有更多代码,我们无法猜测是哪个。
  • 1. NOTE: I EDITED THIS POST TO PROVIDE ADDITIONAL CODE. == 为了更好地帮助 soner 发布 SSCCE/MCVE ,简短,可运行,可编译,2. 搜索 `getColumnClass 以避免强制转换
  • 分离你的语句(而不是一个长的方法链)并进行空检查,因为你确实有空值?为什么要将整数值存储为字符串?只需将它们保存为整数。如果这是数字数据,不是更有意义吗?
  • 如果我进行空检查,那么您建议我将什么作为 int 值存储在对象中?而且,据我了解,JTable 中的整数值自动成为对象,这些对象不能直接转换/转换为 int ......它们必须首先转换/转换为 String。
  • @Daron:首先:使用类 java.lang.Integer。那是一个表示整数的对象。第二:抛出异常的行可能有 5 个不同的值为 null。因此,将此行拆分为多个较小的指令;将结果存储在传递给下一个变量的变量中。 IE。而不是foo.getBar().setBaz(),而是Bar bar = foo.getBar(); bar.setBaz();

标签: java swing casting jtable int


【解决方案1】:

感谢大家帮助我。我最终使用了一个 if 语句来检查空值,尽管我仍然不确定为什么我不需要对循环中的第一个语句做同样的事情。

【讨论】:

  • 第 1 列和第 2 列都有空值。你正在使用getValueAt(i, 1)getValueAt(i, 2)。 NPE 直到具有空值的第一行才会发生
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-05
  • 2014-12-02
  • 2017-09-26
  • 1970-01-01
  • 2014-11-24
  • 2011-04-09
  • 1970-01-01
相关资源
最近更新 更多