タブのコンテンツを新しいウィンドウに表示し、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();
}
コードを更新しましたが、同じ結果が得られます。