2011-01-14 17 views
1

私はノードのグラフをスキャンする幅優先アルゴリズムを持っています。ActionListener内のクラスを初期化できません...助けてください!

私はUIとSwingを初めて使用しています。テキストボックスの文字列をパラメータとして使用して、[OK]ボタンが押されたときにアルゴリズムを実行します。

私のクラスを初期化できないため、プログラムが動作しません。

このコードはコンソールで完全に機能します。私はちょうどUIを理解していない。

start.getText()とend.getText()は、ユーザーが開始ステーションと終了ステーションを入力するテキストボックスです。

JButton okButton = new JButton("Get Route..."); 

    okButton.addActionListener(new ActionListener() { 

     public void actionPerformed(ActionEvent e) { 

      final BreadthFirstShortestPath init = new BreadthFirstShortestPath("/Users/wakemana/Documents/GC02 Java/Tube Stations List/station_names.txt" 
        , "/Users/wakemana/Documents/GC02 Java/Tube Stations List/tube_edges.txt"); 

      init.breadthFirst(start.getText(), end.getText()); 

      ArrayList<String> path = init.getPath(); 

      for (String station : path) { 

       System.out.println(station); 

      } 

     } 
    }); 
    buttonPane.add(okButton); 

そして助けることができる人のため、ここでのスタックトレースは次のとおりです。

/Users/wakemana/Documents/GC02 Java/Tube Stations List/station_names.txt 
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    at java.io.File.<init>(File.java:222) 
    at alex.graph.breadthfirst.StationGraph.<init>(StationGraph.java:19) 
    at alex.graph.breadthfirst.BreadthFirstShortestPath.<init>(BreadthFirstShortestPath.java:22) 
    at alex.graph.breadthfirst.Main$1.actionPerformed(Main.java:103) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028) 
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) 
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) 
    at java.awt.Component.processMouseEvent(Component.java:6352) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) 
    at java.awt.Component.processEvent(Component.java:6117) 
    at java.awt.Container.processEvent(Container.java:2085) 
    at java.awt.Component.dispatchEventImpl(Component.java:4714) 
    at java.awt.Container.dispatchEventImpl(Container.java:2143) 
    at java.awt.Component.dispatchEvent(Component.java:4544) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4621) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4282) 
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212) 
    at java.awt.Container.dispatchEventImpl(Container.java:2129) 
    at java.awt.Window.dispatchEventImpl(Window.java:2478) 
    at java.awt.Component.dispatchEvent(Component.java:4544) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:635) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) 
+1

どのようなエラーメッセージが表示されますか? –

+0

更新しました...ご注意:ファイル名は間違いありません。 – Alex

+1

ファイル名は間違いないとは言いません。なぜなら、問題の原因がわからないからです。デバッグコードをBreadthFirstShortestPathクラスに配置しましたか?あなたはuser.dirが一つのことだと仮定していますが、それは実際何か他のものですか?これはjarファイルから呼び出されていませんか? –

答えて

2

問題がActionListenerではありません。あなたのオブジェクトBreadthFirstShortestPathは正しく構築されていません。これはスタックトレースの関連部分です:

/Users/wakemana/Documents/GC02 Java/Tube Stations List/station_names.txt 
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    at java.io.File.<init>(File.java:222) 
    at alex.graph.breadthfirst.StationGraph.<init>(StationGraph.java:19) 
    at alex.graph.breadthfirst.BreadthFirstShortestPath.<init>(BreadthFirstShortestPath.java:22) 
    at alex.graph.breadthfirst.Main$1.actionPerformed(Main.java:103) 

私はあなたが間違っていて、パスが見つからないと思います。コマンドライン変数は、IDE環境とは異なる場合があります。

+0

ええ、私はそれを見ることができます。ファイルには何も問題はありません。私が言うように、コマンドプロンプトではすべてが完璧に機能します。 – Alex

+0

Dammit私は本当に確かに...残念ながら、 – Alex

+0

これは決して前にイライラされていない...私はUIsが嫌い!彼らと一日対処しなければならないでしょう – Alex

0

@Alex W:使用してみてください:はSystem.getProperty( "はuser.dir")コンテキストの現在のディレクトリを取得し、その後のため相対パスを取得するには"../"を使用あなたが使用していると思う絶対パスここでその場所を見つけることができなかったnullpointer例外が発生しています。

関連する問題