Ich habe eine TabPane mit verschließbaren Tabs. Ich möchte ein "Close Tab Event" auslösen, wenn der Benutzer auf eine Schaltfläche im Tab-Inhalt klickt. Hier ist die Methode aufgerufen, wenn der Benutzer auf die Schaltfläche klickt:JavaFX - Schließen einer Registerkarte in TabPane dynamisch
public class CustomTab extends Tab {
...
protected void close() {
Event.fireEvent(this, new Event(Tab.CLOSED_EVENT));
}
....
}
ich diese benutzerdefinierten Registerkarte in dem tabpane als:
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);
Normalerweise können die Laschen durch den (Standard) in der Nähe Icons klicken geschlossen in der Kopfzeile der Registerkarte und "Geschlossen!" wird auf den Bildschirm gedruckt. Wenn der Benutzer jedoch auf die Schaltfläche klickt (die sich im Inhalt der Registerkarte befindet) und close()
Methode von CustomTab
aufruft, wird wieder "Closed!" wird auf den Bildschirm gedruckt, aber die Registerkarte wird dieses Mal nicht geschlossen. Ist es nicht komisch?
Wie kann ich einen Tab schließen, wenn ich auf eine beliebige Schaltfläche klicke?
S.S .: tabPane.getTabs(). Remove (tab) funktioniert, aber das Auslösen des entsprechenden Ereignisses ist sehr elegant. Es sollte auch die Registerkarte schließen.
welche javafx-version verwenden sie? seit 8.0 gibt es ein "TAB_CLOSE_REQUEST_EVENT" – Sebastian
Da 8.0 nicht offiziell ist, und nicht in Standard jre enthalten, verwende ich 2.2. – Ramazan
1: Wie der Name des Ereignisses "Tab.CLOSED_EVENT" anzeigt, sollte das Ereignis ausgelöst werden, nachdem die Registerkarte geschlossen wurde. IMHO die [Dokumentation] (http://docs.oracle.com/javafx/2/api/javafx/scene/control/Tab.html#CLOSED_EVENT) ist ein bisschen verschwommen. 2: Durch einfaches Aufrufen des Ereignisses wird die Registerkarte nicht geschlossen. Ihre Methode, die 'tabPane.getTabs(). Remove (tab)' aufruft, ist korrekt. – pmoule