Let's say I have JTabbedPane with a ChangeListener
JTabbedPane tabbedPane = new JTabbedPane();
// Add few tabs
.....
.....
tabbedPane.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent changeEvent) {
// How to determine if the changeEvent was fired because of a tab remove/add ?
}
});
and somewhere I am doing a
tabbedPane.removeTabAt(2);
and somewhere else
tabbedPane.add(panel, 0);
The ChangeListener should get fired now, is there any way to determine within the listener if it was called due to a tab remove/add ?
EDIT: I am basically trying to do some actions only when the user switches between tabs and not when adding or removing.
Depending on the exact requirement, you might keep track of the selected component and only do stuff if that has changed:
ChangeListener l = new ChangeListener() {
Component lastSelected = tabbedPane.getSelectedComponent();
@Override
public void stateChanged(ChangeEvent e) {
if (lastSelected != tabbedPane.getSelectedComponent()) {
LOG.info("changed: " + tabbedPane.getSelectedIndex());
lastSelected = tabbedPane.getSelectedComponent();
}
}
};
tabbedPane.addChangeListener(l);
Might not be good enough, though, as it will trigger if the selected tab itself is removed.