2012-04-14 3 views
0

다양한 종류의 프로그램 장르 (코미디, 드라마 등)를 나타내는 다양한 클래스가 있습니다.JTable 및 JTextFields 채우기 문제

나는 '-'로 채워진 텍스트 파일에 Processing이라는 클래스에서 읽은 값을 읽어서 LinkedList에 넣습니다.

GUI를 생성하는 또 다른 클래스 GUI_g가 있습니다. 그것에는 2 개의 JTables가있다. 목록에 하나, 채널에 1 개. JTable listTable은 연결된 목록에서 채워지며 사용자가 행을 클릭 할 때마다 텍스트 필드의 텍스트가 그에 따라 변경됩니다.

5 개의 필드 (제목, 장르 및 기간, 배우, 감독)를 시도하고 클릭 한 행에 따라 다른 텍스트를 표시하는 3 개의 텍스트 필드로 작업했습니다. 그러나 필요한 모든 값을 추가하면 오류가 발생하고 필드가 채워지지 않습니다. 이 세포는 (그것이 있어야대로) 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) 

이미지 예 :

enter image description here

답변

1

문제는 GUI_g 클래스의 205 행입니다 (컴파일러에서 설명한대로).

String actor = listTable.getValueAt(row, column+3).toString(); 

toString() 메서드를 사용하기 전에 입력 값을 검사하거나 정리하지 않았습니다.

물론 null 값에 대해서는 메서드를 사용할 수 없습니다.

모든 입력 (이 입력뿐만 아니라)을 확인해야합니다. 필드가 많으므로이를 위해 helper 메소드/클래스를 만들어 깨끗한 입력을 반환해야합니다.

그냥 빨리 이것을 극복하려면 다음을 수행

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

당신이 확인하려고했던 어떤 객체에 'T'를 교체합니다.

+0

'T'를 정확히 대체해야 할 부분을 설명해 주실 수 있습니까? 나는 꽤 이해하지 못했다. – Brian

+0

@Brian : toString() 메소드는 java.lang.Object 메소드이므로 모든 객체에 속할 수있다. listTable.getValueAt (...)가 참조하는 메서드를 찾기 위해 코드를 살펴 보지 않았지만 해당 메서드에서 반환하는 개체가 무엇이든간에 - T를 해당 형식으로 설정해야합니다 (T는 형식을 나타냅니다. btw). – Ozzy

+0

아 감사합니다. 또한 .. 왜 각 개체에 대한 시놉시스 필드가 없습니까? – Brian