1

JPanel にある JFXPanel のドラッグ アンド ドロップ イベントに問題があります。ドラッグ メッセージを DragBoard にプッシュすると、アプリケーションの javaFX 部分が機能しなくなります。スイングイベントのメカニズムだと思いますが、よくわかりません。その他のイベントは問題ありません。それは私を混乱させました。この問題の解決策はありますか? 前もって感謝します。

public class MyScene extends Scene {

    public MyScene(VBox vBoxMainLayout) {
        super(vBoxMainLayout);

        HBox hBox = new HBox();
        hBox.setPrefSize(10000, 10000);
        hBox.setSpacing(40);

        Button buttonSource = new Button("Source");
        buttonSource.setMinSize(60, 30);

        buttonSource.setOnDragDetected(new EventHandler<MouseEvent>() {
            public void handle(MouseEvent event) {
                Dragboard db = startDragAndDrop(TransferMode.ANY);

                ClipboardContent content = new ClipboardContent();
                String message = "Drag operatation is done";
                content.putString(message);
                db.setContent(content);
                event.consume();
            }
        });

        buttonSource.setOnDragDone(new EventHandler<DragEvent>() {
            public void handle(DragEvent event) {

                event.consume();
            }
        });

        TextArea textAreaTarget = new TextArea();
        textAreaTarget.setMinSize(200, 500);

        hBox.getChildren().add(buttonSource);
        hBox.getChildren().add(textAreaTarget);

        vBoxMainLayout.getChildren().add(hBox);
    }

}

public class Main extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage stage) {
        VBox vBoxMainLayout = new VBox();
        MyScene myScene = new MyScene(vBoxMainLayout);

        JFrame frame = new JFrame();
        JFXPanel arg0 = new JFXPanel();
        arg0.setScene(myScene);
        frame.getContentPane().add(arg0);
        frame.setVisible(true);

    }
}
4

1 に答える 1

0

これは JavaFX 2.1 の既知のデッドロックであり、2.2 にプッシュされました (それは私が oracle から学んだことです) が、まだ解決されていないと思います。

于 2012-05-02T14:31:32.493 に答える