我在JavaFX应用程序中有一个TabPane.我必须写一个监听器来关闭标签,所以我从标签中删除了默认关闭图标并添加了我的自定义关闭图标.以下是代码:
Tab gTab = new Tab("GlobalData.json");
Hyperlink hlink = new Hyperlink();
Image image = new Image(FileTreeItem.class.getResourceAsStream("../images/close.png"));
hlink.setGraphic(new ImageView(image));
hlink.setFocusTraversable(false);
gTab.setGraphic(hlink);
hlink.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
if (TabPaneUtil.getInstance().getSelectionModel().getSelectedItem().getText().endsWith("*")) {
Response res = FXOptionPane.showConfirmDialog(new Main().getPrimaryStage(), "Would you like to save?", "Confirmation");
if (res.equals(Response.YES))
event.consume();
else
TabPaneUtil.getInstance().getTabs().remove(TabPaneUtil.getInstance().getSelectionModel().getSelectedItem());
} else {
TabPaneUtil.getInstance().getTabs().remove(TabPaneUtil.getInstance().getSelectionModel().getSelectedItem());
}
}
});
gTab.setContent(main1.globalDataView(ApplicationContext.getTreeView().getSelectionModel().getSelectedItem()));
TabPaneUtil.getInstance().getTabs().add(gTab);
TabPaneUtil.getInstance().getSelectionModel().select(gTab);
Run Code Online (Sandbox Code Playgroud)
发生的事情是我首先获得关闭图标,然后是选项卡名称.有没有什么方法可以先得到标签名称,然后是图形?
PS:我见过一些解决方案,比如在Label和旋转图形中添加文本.我不太可能这样做,因为我将不得不在我的应用程序中进行大量代码更改并且它变得非常混乱!任何帮助,将不胜感激.
您可以使用外部CSS文件执行此操作:只需包含规则
.tab-label {
-fx-content-display: right ;
}
Run Code Online (Sandbox Code Playgroud)
如果需要,您只能将其应用于特定的选项卡窗格
.my-special-tab-pane .tab-label {
-fx-content-display: right ;
}
Run Code Online (Sandbox Code Playgroud)
和
someTabPane.getStyleClass().add("my-special-tab-pane");
Run Code Online (Sandbox Code Playgroud)