2012-04-14 6 views
0

私は様々な種類の番組ジャンル(コメディ、ドラマなど)を表すさまざまなクラスを持っています。JTableとJTextFieldsを埋め込む際の問題

私はテキストファイルに ' - 'の値を入力しています。これはProcessingというクラスで読み込まれ、LinkedListに格納されます。

GUIを作成する別のクラスGUI_gがあります。それは2つのJTablesを持っています。 1つはリスト用、1つはチャネル用です。 JTable listTableはリンクされたリストから塗りつぶされ、ユーザーが行をクリックするたびにテキストフィールドのテキストがそれに応じて変化します。

5つのフィールド(タイトル、ジャンル、期間、俳優、監督)を試してみました.3つのテキストフィールドがクリックされた行に応じて異なるテキストを表示していました。しかし、必要な値をすべて追加すると、エラーが表示され、フィールドがいっぱいになりません。それは、細胞が(それがあるべきよう)のJTextField にデータをコピーすることはSnyopsis列が空のままで、満たされていない場合にはしかし、それはエラーを返すまで充填されていないミュージック・ビデオなら

は、私は2つの問題を抱えています。 以下は、主に使用されるクラスです。あなたが他人を必要とする場合は教えてくださいと私はアップロードされます。

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値でメソッドを使用することはできません。

すべての入力を確認する必要があります(これだけではありません)。あなたは多くのフィールドを持っているので、ヘルパーメソッド/クラスを作成して、それを行い、きれいな入力を返さなければなりません。

あなただけのすぐにこの1を回避したい場合は、次の操作を行います。

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

はあなたがチェックしようとしていたものは何でもオブジェクトと「T」を交換してください。

+0

「T」を「T」に置き換えて正確に説明できますか?私は全く理解していませんでした – Brian

+0

@Brian:toString()メソッドはjava.lang.Objectメソッドなので、どのオブジェクトにも属しています。 listTable.getValueAt(...)が参照するメソッドを見つけるためにあなたのコードを調べるのは面倒ではありませんでしたが、そのメソッドから戻ってくるオブジェクトはどれですか?Tをその型に設定するだけです(Tは型、 btw)。 – Ozzy

+0

ああありがとう。また、なぜオブジェクトごとに概要フィールドがないのですか? – Brian

関連する問題