Javafx拖放TabPane

时间:2013-03-09 17:35:44

标签: drag-and-drop javafx

我(在JavaFx应用程序中)有一个带有不同选项卡的tabpane。我想实现一个拖放功能来拖动舞台外的标签。这样它就可以生成一个新窗口(就像在Google Chrome中一样)。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您应该查看Tom Schindl在Blog

上显示的解决方案

答案 1 :(得分:-1)

这是一个方法,它只是把内容带到一个新窗口的一部分,但它是一个开始。

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,也就是说,如果它没有做任何特定的事情,那么你用tab的内容创建一个新的stackPane 。

*顺便提一下,窗格的内容是StackPane。