我在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);
正在发生的事情是,我先获得关闭图标,然后获得选项卡名称。有什么办法可以让我先获取选项卡名称,然后再获取图形?
PS:我已经看到了一些解决方案,例如在Label中添加文本和旋转图形。我无法做到这一点,因为我必须在应用程序中进行很多代码更改,而且会变得非常混乱!任何帮助,将不胜感激。
您可以使用外部CSS文件执行此操作:只需添加规则
.tab-label {
-fx-content-display: right ;
}
如果需要,您只能使用它将其应用于特定的选项卡窗格
.my-special-tab-pane .tab-label {
-fx-content-display: right ;
}
和
someTabPane.getStyleClass().add("my-special-tab-pane");