2012-04-26 69 views
1

我在JFXPanel上的位於JPanel上的拖放事件有問題。當我將拖動消息推送到DragBoard時,應用程序的javaFX部分不再起作用。我認爲它關於擺動事件mechanizm,但我不確定。其他事件沒有問題。這讓我感到困惑。有沒有解決這個問題的方法?提前致謝。如何使用Swing在JavaFX 2.2中進行拖放操作?

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); 

    } 
} 
+0

謝謝。它看起來像一個錯誤。你怎麼看待這件事? – 2012-04-27 08:01:25

回答

0

這是JavaFX 2.1中已知的死鎖,並推到2.2(這是我從oracle學到的),但我想它仍然沒有解決。