我有這個程序完全相同的源代碼 - 但自升級到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目錄中項目類中的代碼。
任何幫助將非常感激 謝謝
哪來的binOneContentsLabel的聲明,和FX:ID在控制類,檢查這些。並確保它不是靜態的。 – brian