我(在JavaFx应用程序中)有一个带有不同选项卡的tabpane。我想实现一个拖放功能来拖动舞台外的标签。这样它就可以生成一个新窗口(就像在Google Chrome中一样)。
感谢您的帮助。
答案 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。