0

我有這個程序完全相同的源代碼 - 但自升級到Netbeans 8和JDK 8,它給了我一個InvocationTargetException引起的NullPointerException在這條線上執行「binOneDragDropped」方法時JavaFX中被分配到一個標籤的上拖動的方法丟棄):Java InvocationTargetException引起的空指針異常

binOneContentsLabel.setText(binOneNewLabel); 

的方法「binOneDragDropped」在類FirstFitController,並定義爲:

@FXML 
    private void binOneDragDropped(DragEvent event) { 
       // Create dragboard object & FXMLController object 
       Dragboard db = event.getDragboard(); 

       // Make sure success is set to false 
       boolean success = false; 

       // Declare contents array list 
       ArrayList binOneContents = new ArrayList(); 

       if (db.hasString()) { 
        // Add number to the bin (Array List) - if bin is not full 
        if (binOneHasSpace = false) { 
         mainControllerClass.showDialog("Bin is full."); 
        } else { 
         binOneContents.add(db.getString()); 
        } 

        // Go through the array list 
        for (Object s : binOneContents) { 
         binOneNewLabel += s.toString() + ", "; 
        } 

        // Update bin contents label 
        binOneContentsLabel.setText(binOneNewLabel); 

        binOneTotalValue = calculateTotalValue(binOneNewLabel); 


        // Check if bin is full and set boolean to false + change bin colour to red if it is 
        if (binOneTotalValue >= Integer.parseInt(binSize)) { 
         // Set boolean to false 
         binOneHasSpace = false; 

         // Set bin colour to red to show user it's full 
         binOne.setFill(Color.RED); 
        } 

        // Set success boolean to true 
        success = true; 
       } 

       // Let source know whether string drop was successful 
       event.setDropCompleted(success); 

       // Stop further propagation 
       event.consume(); 
    } 

的「calculateTotalValue」方法僅是一種方法od將一組數字作爲以逗號分隔的字符串(例如, 「1,2,3,4」)將它們分開並將它們全部加起來以獲得總數。

「binOneContentsLabel」 僅僅是剛剛在JavaFX的一個標籤。 「binOneNewLabel」是在程序開始時(而不是在方法本身)初始化爲「」的字符串對象。

我測試了所有的這一點,它運行完全罰款(它的目的都是拖動標籤到另一個標籤和與所述第二個替換的第一個標籤中的內容)。但是,在我卸載Netbeans並安裝了JDK 8 +下載的Netbeans 8並重新安裝之後,該項目在那裏,但一些代碼被自動更改。我使用了備份(在升級之前完成),並從備份中複製所有類代碼,並將其替換爲Netbeans目錄中項目類中的代碼。

任何幫助將非常感激 謝謝

+1

哪來的binOneContentsLabel的聲明,和FX:ID在控制類,檢查這些。並確保它不是靜態的。 – brian

回答

0

感謝布賴恩!我發現它由於某種原因被設置爲靜態。我改變了它,現在它工作正常。