У меня есть TabPane с закрываемыми вкладками. Я хочу запустить событие закрытой вкладки, когда пользователь нажимает кнопку в содержимом вкладки. Вот метод вызывается, когда пользователь нажимает на кнопку:JavaFX - закрытие Tab в TabPane динамически
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' указывает, событие должно быть запущено после закрытия вкладки. IMHO [документация] (http://docs.oracle.com/javafx/2/api/javafx/scene/control/Tab.html#CLOSED_EVENT) немного нечеткая. 2: Простое вызов события не закрывает вкладку. Ваш подход, вызывающий 'tabPane.getTabs(). Remove (tab)' правильный. – pmoule