我有一個帶有可關閉選項卡的TabPane。我想在用戶點擊標籤內容中的按鈕時觸發「關閉標籤事件」。這裏是調用的方法,當用戶點擊該按鈕:JavaFX - 動態關閉TabPane中的Tab鍵
public class CustomTab extends Tab {
...
protected void close() {
Event.fireEvent(this, new Event(Tab.CLOSED_EVENT));
}
....
}
我添加此自定義選項卡爲tabpane:
TabPane tabPane = new TabPane();
...
CustomTab tab = new CustomTab();
tab.setOnClosed(new EventHandler<Event>() {
@Override
public void handle(Event t) {
System.out.println("Closed!");
}
});
tabPane.getTabs().add(tab);
tabPane.getSelectionModel().select(tab);
通常情況下,標籤可以通過點擊(默認)關閉圖標來關閉在標籤的標題中,「關閉!」被打印到屏幕上。但是,當用戶單擊該按鈕(即在選項卡的內容中)並調用close()
方法CustomTab
時,再次「關閉!」打印到屏幕上,但此時此選項卡未關閉。這不是很奇怪嗎?
如何在點擊任意按鈕時關閉標籤頁?
P.S .: tabPane.getTabs()。remove(tab)有效,但觸發相應的事件非常優雅。它也應該關閉標籤。
你正在使用哪個javafx版本?自8.0以來,有一個「TAB_CLOSE_REQUEST_EVENT」 – Sebastian
由於8.0不是官方的,並且不包含默認的jre,所以我使用了2.2。 – Ramazan
1:由於事件名稱爲「Tab.CLOSED_EVENT」,因此該選項卡關閉後應該觸發該事件。恕我直言,[文檔](http://docs.oracle.com/javafx/2/api/javafx/scene/control/Tab.html#CLOSED_EVENT)有點模糊。 2:只需調用該事件不會關閉該選項卡。你的方法調用'tabPane.getTabs()。remove(tab)'是正確的。 – pmoule