我有这个程序使用完全相同的源代码 - 但是自从升级到Netbeans 8和JDK 8后,它给了我一个由NullPointerException引起的InvocationTargetException,当" binOneDragDropped"执行方法(这是在JavaFX中删除的拖动时分配给标签的方法):
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" method只是一个方法,它将一组数字作为以逗号分隔的字符串(例如" 1,2,3,4和#34;),将它们分开并将它们全部加起来得到总数。
" binOneContentsLabel"只是JavaFX中的标签。 " binOneNewLabel"是一个String对象,初始化为""在程序开始时(不在方法本身)。
我测试了所有这些并且它运行得非常好(这一切的目的是将标签拖到另一个标签上并用第二个标签替换第一个标签的内容)。但是在我卸载了Netbeans并安装了JDK 8 +下载的Netbeans 8并再次安装后,该项目就在那里,但有些代码自动更改了。我使用了备份(在升级之前制作)并从备份中复制了所有类代码,并将其替换为Netbeans目录中项目类中的代码。
任何帮助都会非常感激 谢谢
答案 0 :(得分:0)
谢谢布莱恩!我发现由于某种原因它被设置为静态。我改了它,现在工作正常。