【发布时间】:2013-06-30 20:43:28
【问题描述】:
我有这个上下文菜单,可以选择在新窗口中显示选项卡内容并关闭 TabPane 选项卡:
MenuItem item5 = new MenuItem("Open Tab In Stand-Alone Window");
item5.setOnAction(new EventHandler<ActionEvent>()
{
@Override
public void handle(ActionEvent e)
{
System.out.println("Open Tab In Stand-Alone Window");
Node test = tab.getContent();
NavMenu.standAloneTab(test);
tabPane.getTabs().remove(tab);
}
});
带有标签内容的新对话框:
public static void standAloneTab(Node tab)
{
final int xSize = 640;
final int ySize = 480;
final Color backgroundColor = Color.WHITESMOKE;
Stage newConnDialog = new Stage();
newConnDialog.initModality(Modality.WINDOW_MODAL);
GridPane grid = new GridPane();
grid.setAlignment(Pos.CENTER);
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(20, 20, 20, 20));
grid.add(tab, 0, 0);
Scene aboutDialogScene = new Scene(grid, xSize, ySize, backgroundColor);
newConnDialog.setScene(aboutDialogScene);
newConnDialog.show();
}
当我选择Open Tab In Stand-Alone Window 时,新窗口会显示选项卡的内容,但旧选项卡并未关闭。如果我调用tabPane.getTabs().remove(tab); 关闭标签,新窗口是空的。
如何在不删除内容的情况下关闭标签页?
编辑
我以这种方式更新了代码:
MenuItem item5 = new MenuItem("Open Tab in Stand-alone Window");
item5.setOnAction(new EventHandler<ActionEvent>()
{
@Override
public void handle(ActionEvent e)
{
System.out.println("Open Tab In Stand-Alone Window");
Node openedTab = tab.getContent();
NavMenu.standAloneTab(tabPane, openedTab);
//tabPane.getTabs().remove(tab);
}
});
还有新的对话框:
public static void standAloneTab(final TabPane tabPane, final Node tab)
{
Stage newConnDialog = new Stage();
newConnDialog.initModality(Modality.WINDOW_MODAL);
newConnDialog.setOnShown(new EventHandler<WindowEvent>()
{
@Override
public void handle(WindowEvent t)
{
tabPane.getTabs().remove(tab);
}
});
GridPane grid = new GridPane();
grid.setAlignment(Pos.CENTER);
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(20, 20, 20, 20));
grid.add(tab, 0, 0);
Scene aboutDialogScene = new Scene(grid, 700, 500, Color.WHITESMOKE);
newConnDialog.setScene(aboutDialogScene);
newConnDialog.show();
}
我更新了代码,但得到了相同的结果。
【问题讨论】:
-
您正在将选项卡的内容(openedTab 变量是选项卡的内容)传递给standAloneTab 方法。您正在尝试从选项卡中删除内容。但是,您应该从 tabPane 中删除选项卡本身,而不是它的内容。试一试...
-
You are passing the content of the tab (openedTab variable is the content of the tab) to the standAloneTab method. And you are trying to remove the content from the tabs.是 -
然而,你必须给 tabPane.getTabs().remove(...) 方法一个 Tab 对象,而不是其他一些 Node 对象,以便能够删除选项卡。肯定是错的,不能这样去掉标签。
标签: java javafx-2 javafx javafx-8