如何使用Swing在JavaFX 2.2中进行拖放操作?

时间:2012-04-26 16:04:08

标签: javafx-2

我在位于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);

    }
}

1 个答案:

答案 0 :(得分:0)

这是JavaFX 2.1中一个已知的死锁并被推到2.2(这就是我从oracle学到的东西),但我想它还没有解决。