このプログラムにはまったく同じソースコードがありましたが、Netbeans 8 と JDK 8 にアップグレードしてから、「binOneDragDropped」メソッドが実行されたときに、この行で NullPointerException が原因で InvocationTargetException が発生しました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」メソッドは、コンマで区切られた文字列として一連の数値を取得し (例: 「1, 2, 3, 4」)、それらを分離し、それらをすべて合計して合計を取得するメソッドです。
「binOneContentsLabel」は、JavaFX の単なるラベルです。「binOneNewLabel」は、プログラムの開始時に (メソッド自体ではなく) 「」に初期化される String オブジェクトです。
これらすべてをテストしたところ、問題なく動作しました (すべての目的は、ラベルを別のラベルにドラッグし、最初のラベルの内容を 2 番目のラベルに置き換えることです)。しかし、Netbeans をアンインストールして JDK 8 をインストールし、Netbeans 8 をダウンロードして再度インストールした後、プロジェクトはそこにありましたが、コードの一部が自動的に変更されました。(アップグレードの直前に作成した) バックアップを使用し、そのバックアップからすべてのクラス コードをコピーして、Netbeans ディレクトリにあるプロジェクトのクラスのコードに置き換えました。
どんな助けでも本当にありがとうございました