0

さまざまな種類のプログラムジャンル(コメディ、ドラマなど)を表すさまざまなクラスがあります。

「-」で区切られた値で満たされたテキストファイルがあり、Processingというクラスによって読み取られ、LinkedListに配置されます。

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

5つのフィールド(タイトル、ジャンルと期間、俳優、監督)で試してみましたが、3つのテキストフィールドで、クリックされた行に応じて異なるテキストが表示されました。ただし、必要な値をすべて追加すると、エラーが発生し、フィールドに入力されません。

私には2つの問題があります:

ミュージックビデオの場合、セルは(本来あるべきように)いっぱいになりませんが、データを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)

画像の例:

ここに画像の説明を入力してください

4

1 に答える 1

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'を、チェックしようとしたオブジェクトに置き換えます。

于 2012-04-14T19:25:14.593 に答える