閉じることができるタブを持つ TabPane があります。ユーザーがタブのコンテンツのボタンをクリックしたときに「タブを閉じるイベント」を発生させたい。ユーザーがボタンをクリックしたときに呼び出されるメソッドは次のとおりです。
public class CustomTab extends Tab {
...
protected void close() {
Event.fireEvent(this, new Event(Tab.CLOSED_EVENT));
}
....
}
このカスタム タブを次のようにタブペインに追加します。
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
、再び「Closed!」になります。が画面に出力されますが、今回はタブが閉じられません。変じゃない?
任意のボタンをクリックしてタブを閉じるにはどうすればよいですか?
PS: tabPane.getTabs().remove(tab) は機能しますが、対応するイベントの発生は非常にエレガントです。また、タブを閉じる必要があります。