2012-09-16 91 views
1

我正在使用Java中的Halo:CE自定義遊戲啓動器,並且我正在使用Java中的Properties類設置首選項系統,以便用戶可以設置自定義遊戲路徑。我使用JFileChooser來選擇一個文件,然後將該路徑寫入配置文件。getAbsolutePath()NullPointerException

但是,該方案提供了在該行空指針異常:(這是在事件偵聽器函數)

if(source == fovChooseButton) 
    { 
     int returnVal = chooseFile.showOpenDialog(settingsWindow); 
     if(returnVal == JFileChooser.APPROVE_OPTION) 
     { 
      File selected = chooseFOV.getSelectedFile(); 

      try 
      { 
       config.setProperty("STLPath", selected.getAbsolutePath()); //This line gives the exception 
       config.store(new FileOutputStream(CONFIG_FILE), null); 


      } 

      catch(Exception e) 
      { 
       handleException(e); 
      } 
     } 
    } 

我有另一個JFileChooser中,它不會引發任何異常。下面是另一個代碼:

if(source == fileChooseButton) 
    { 
     int returnVal = chooseFile.showOpenDialog(settingsWindow); 
     if(returnVal == JFileChooser.APPROVE_OPTION) 
     { 
      File selected = chooseFile.getSelectedFile(); 

      try 
      { 
       config.setProperty("GamePath", selected.getAbsolutePath()); 

       config.store(new FileOutputStream(CONFIG_FILE), null); 

      } 

      catch(Exception e) 
      { 
       handleException(e); 
      } 
     } // end if 

    } 

所有handleException()的作用是顯示與堆棧跟蹤的對話窗口。

幫助?

+0

你檢查,如果配置可以爲空文件? – sstendal

+0

發佈完整的stacktrace和linenumbers? –

+0

那麼哪個對象爲空 - 它是「config」還是「selected」 - 是否打印出來檢查? – DNA

回答

0

int returnVal = chooseFile.showOpenDialog(settingsWindow); File selected = chooseFOV.getSelectedFile();

你有兩個變量,可能也想在第二行使用chooseFile

+0

另一行給予豁免 – Ilya

+1

謝謝,我剛剛意識到,在事件監聽器chooseFOV打開chooseFile的對話框。 – isometric

+0

@isometric高興幫助! :) –

0

有什麼選擇FOV?你似乎在使用chooseFile作爲對話框,所以這是一個選擇。

3

您提示輸入文件的用戶與chooseFile事後你試圖讀取其他文件選擇chooseFOV

int returnVal = chooseFile.showOpenDialog(settingsWindow); 
    if(returnVal == JFileChooser.APPROVE_OPTION) 
    { 
     File selected = chooseFOV.getSelectedFile(); 
相關問題