我有各种类别代表各种类型的节目类型(喜剧,戏剧等)。
我有一个文本文件,其中填充了' - '分隔值,这些值由一个名为Processing的类读取并将它们放入LinkedList。
我有另一个创建GUI的类GUI_g。它有2个JTable。一个用于列表,一个用于Channel。 JTable listTable从链表中填充,每当用户点击一行时,文本字段的文本都会相应更改。
我尝试了5个字段(标题,流派和持续时间,演员,导演)并且它有效,3个文本字段根据单击的行显示不同的文本。但是,当我添加所有需要的值时,会出现错误并且没有填充任何字段。
我有两个问题:
如果是MusicVideo,则单元格未填满(应该如此)但是在将数据复制到JTextFields时会返回错误 Snyopsis列保持为空并且未填充。 以下是课程(主要使用的课程)。如果你需要别人告诉我,我会上传。
GUI_g:http://pastebin.com/KsZBwgtR ProgramTableModel:http://pastebin.com/6Rc2bVxa 处理:http://pastebin.com/8f8iteVK 计划:http://pastebin.com/NU3XGvM8
这是我得到的错误:
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)
图片示例:
答案 0 :(得分:1)
问题是GUI_g类中的第205行(如编译器所述)。
String actor = listTable.getValueAt(row, column+3).toString();
在尝试使用toString()方法之前,没有检查或清除输入值。
当然,你不能在null值上使用方法。
您需要检查所有输入(不仅仅是这一项)。由于你有很多字段,你应该为你做一个帮助方法/类,并返回一个干净的输入。
如果您只想快速解决这个问题,请执行以下操作:
String actor = " ";
T input = listTable.getValueAt(row, column+3);
if (input != null) actor = input.toString();
return actor;
将“T”替换为您要检查的任何对象。