2014-11-14 68 views
0

我正在使用JavaFX Scenebuilder 2.0和Netbeans編寫一些代碼。我正在嘗試使用戶界面工作,以便在頁面上按下按鈕時,用戶輸入到頁面上的所有信息將被輸入到ArrayList中。然後我想將此ArrayList添加到將包含每個較小列表的ArrayList。目標是稍後循環訪問列表以提取數據並使用它創建輸出文件。然而,我很難將第一個列表正確添加到更大的列表中(我相信由於NullPointerException,儘管用Javafx進行調試有點令人困惑,所以我不完全確定)。這裏是我的代碼:嘗試將.add列表添加到列表的列表時出現NullPointerException

List singleEndSample=new ArrayList<String>(); 
List<List> allSamples; 

@FXML 
private void addSample(ActionEvent event) { 
    final int index = groups1.getSelectionModel().getSelectedIndex(); 
    if (index == -1) {noGroupError.setVisible(true);} 
    else 
    { 
     String name = libName.getText(); 
     String CV = cVar.getText(); 
     String insert = insertSize.getText(); 
     noGroupError.setVisible(false); 
     if (singleEnd.isSelected()) { 
      String location = singleReadLocation.getText(); 
      if (libName.getText().length() != 0) { 
       if (singleReadLocation.getText().length() != 0) { 
        if (insertSize.getText().length() != 0) { 
         if (cVar.getText().length() != 0) { 
          singleEndSample.clear(); 
          String sample = libName.getText(); 
          samplesListView.add(sample); 
          sampleList.setItems(samplesListView); 
          singleEndSample.add((String) listViewItems.get(index)); 
          singleEndSample.add(name); 
          singleEndSample.add(location); 
          singleEndSample.add(insert); 
          singleEndSample.add(CV); 
          allSamples.add(singleEndSample); 
          singleReadLocation.clear(); 
          cVar.clear(); 
          insertSize.clear(); 
          libName.clear(); 
         } 
        } 
       } 
      } 
     } 
    } 

這是我從線「allSamples.add(singleEndSample)傳來的錯誤;

Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException 
at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1762) 
    at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1645) 
    at  com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191) 
    at  com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74) 
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49) 
    at javafx.event.Event.fireEvent(Event.java:198) 
    at javafx.scene.Node.fireEvent(Node.java:8216) 
    at javafx.scene.control.Button.fire(Button.java:185) 
    at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:182) 
    at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:96) 
    at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:89) 
    at  com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEven tHandler.java:218) 
    at  com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191) 
    at  com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74) 
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54) 
    at javafx.event.Event.fireEvent(Event.java:198) 
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3724) 
    at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3452) 
    at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1728) 
    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2461) 
    at  com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java :348) 
    at  com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java :273) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at  com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:382) 
    at com.sun.glass.ui.View.handleMouseEvent(View.java:553) 
    at com.sun.glass.ui.View.notifyMouse(View.java:925) 
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
    at com.sun.glass.ui.win.WinApplication.lambda$null$141(WinApplication.java:102) 
    at com.sun.glass.ui.win.WinApplication$$Lambda$37/96639997.run(Unknown Source) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:483) 
    at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71) 
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:483) 
    at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275) 
    at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1757) 
    ... 51 more 
Caused by: java.lang.NullPointerException 
    at pipeline.ui.PipelineUIController.addSample(PipelineUIController.java:381) 
    ... 61 more 

請幫助

+0

如果您已聲明'allSamples =新的ArrayList ();' –

回答

0

這個問題似乎是!你永遠不會實例化allSamples,所以當你嘗試訪問allSamples.add(singleEndSample);行時,你試圖訪問一個null對象。因爲List是抽象的,不能被實例化,所以我建議將它調整爲像一個ArrayList那樣可以執行即將實施(不是抽象的)。

一種可能的實現可能看起來像:

ArrayList singleEndSample=new ArrayList<String>(); 
List<ArrayList> allSamples = new ArrayList<ArrayList>(); 
+0

作品完美了,謝謝! –