0

このプログラムにはまったく同じソースコードがありましたが、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 ディレクトリにあるプロジェクトのクラスのコードに置き換えました。

どんな助けでも本当にありがとうございました

4

1 に答える 1

0

ありがとうブライアン!何らかの理由で静的に設定されていることがわかりました。私はそれを変更し、今では正常に動作します。

于 2014-03-27T21:49:49.433 に答える