2013-03-09 115 views
3

我有(在JavaFx應用程序中)一個帶有不同選項卡的選項卡。我想要實現一個拖放功能來拖動舞臺外的標籤。這樣它可以生成一個新的窗口(如谷歌瀏覽器)。Javafx拖放TabPane

感謝您的幫助。

+0

歡迎來到Stackoverflow解決方案。你會告訴我們還是告訴我們你有多遠? – 2013-03-09 17:57:06

+0

我也感興趣的是有沒有實施的例子。 – 2013-07-10 10:54:33

+0

如果你解決了這個問題,你能告訴我們一些示例代碼嗎? – 2013-07-10 10:55:12

回答

-1

這裏是一個aproach,它只是將內容帶入新窗口的一部分,但它是一個開始。

private Tab createTab(String text) { 
     final Tab tab = new Tab(); 
     final Label label = new Label(text); 
     tab.setGraphic(label); 
     label.setOnDragDone(new EventHandler<DragEvent>() { 

      @Override 
      public void handle(DragEvent event) { 
       if (event.getAcceptedTransferMode() == null) { 
        final StackPane content = (StackPane) tab.getContent(); 
        tab.setContent(null); 
        Stage stage = new Stage(); 
        stage.setScene(new Scene(content)); 
        stage.show(); 
        tab.getTabPane().getTabs().remove(tab); 

        event.consume(); 

       } 

      } 
     }); 
} 

基本上你必須創建使用這種方法的標籤,如果事件的接收器不支持draging,也就是說,如果它沒有做任何具體的,那麼你創建一個新的stackPane標籤的內容。

*順便說一句,窗格的內容是一個StackPane。

0

你應該檢查由湯姆Schindl在他的Blog