Java 填充JTable和JTextFields时出现问题

Java 填充JTable和JTextFields时出现问题,java,user-interface,nullpointerexception,awt,Java,User Interface,Nullpointerexception,Awt,我有各种课程,代表各种类型的节目类型(喜剧、戏剧等) 我有一个文本文件,其中填充了“-”分隔的值,这些值由一个名为Processing的类读取,并将它们放入LinkedList中 我有另一个类GUI_g来创建GUI。它有两个JTables。一个用于列表,一个用于频道。JTable listTable从linkedlist中填充,每当用户单击一行时,textfields的文本都会相应更改 我尝试了5个字段(标题、类型和持续时间、演员、导演),效果很好,3个文本字段根据单击的行显示不同的文本。但是,

我有各种课程,代表各种类型的节目类型(喜剧、戏剧等)

我有一个文本文件,其中填充了“-”分隔的值,这些值由一个名为Processing的类读取,并将它们放入LinkedList中

我有另一个类GUI_g来创建GUI。它有两个JTables。一个用于列表,一个用于频道。JTable listTable从linkedlist中填充,每当用户单击一行时,textfields的文本都会相应更改

我尝试了5个字段(标题、类型和持续时间、演员、导演),效果很好,3个文本字段根据单击的行显示不同的文本。但是,当我添加了所有需要的值时,出现了一个错误,并且没有填充任何字段

我有两个问题:

如果是MusicVideo,则单元格没有填满(应该是这样),但将数据复制到JTextFields时会返回错误 Snyopsis列保持为空且未填充。 下面是类(主要使用的类)。如果你需要其他人告诉我,我会上传

吉乌格: 可编程表模型: 处理: 节目:

这是我得到的错误:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at GUI_g$1.mouseClicked(GUI_g.java:205)
    at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270)
    at java.awt.Component.processMouseEvent(Component.java:6507)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at java.awt.Component.processEvent(Component.java:6269)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4860)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4686)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4501)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2713)
    at java.awt.Component.dispatchEvent(Component.java:4686)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
    at java.awt.EventQueue.access$000(EventQueue.java:101)
    at java.awt.EventQueue$3.run(EventQueue.java:666)
    at java.awt.EventQueue$3.run(EventQueue.java:664)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:680)
    at java.awt.EventQueue$4.run(EventQueue.java:678)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
图像示例:


问题是GUI类中的第205行(如编译器所述)

在尝试使用toString()方法之前,没有检查或清除输入值

当然,不能对空值使用方法

您需要检查所有输入(而不仅仅是此输入)。因为您有很多字段,所以应该创建一个帮助器方法/类来为您这样做,并返回一个干净的输入

如果您只想快速绕过此问题,请执行以下操作:

String actor = " ";
T input = listTable.getValueAt(row, column+3);
if (input != null) actor = input.toString();
return actor;

将“T”替换为您试图检查的任何对象。

您能解释一下我应该用什么替换“T”吗?我不太清楚understand@Brian:toString()方法是java.lang.Object方法,因此它可以属于任何对象。我没有费心去检查你的代码来找到listTable.getValueAt(…)引用的方法,但是无论你从那个方法返回哪个对象,你只需要将t设置为那个类型(t代表类型,顺便说一句)。啊,好的,谢谢。也。。为什么每个对象的大纲字段都不在那里呢?我试着用代码
if(listTable.getValueAt(行,列+8)==null){etc}
。但事实并非如此work@Brian很抱歉,如果没有对整个代码进行筛选或编译,我将无法知道这一点(这两项我都懒得冒犯)。你有几个选择;1) 编辑您的答案,只发布与问题相关的代码,以便有人更可能为您调试它;或者2)创建问题的SSCE(简短、可编译的程序示例,将与问题无关的所有代码都省略),然后发布一个新问题。
String actor = " ";
T input = listTable.getValueAt(row, column+3);
if (input != null) actor = input.toString();
return actor;