I want to detect when a tab is changed and retrieve the selected index. All the examples I've been able to find seem outdated and I haven't been able to implement them successfully.
It forces me to cast my changeListener to javax.swing.event.ChangeListener, but at the same time doesn't let me compile that. Where am i going wrong?
ChangeListener changeListener = new ChangeListener() {
public void stateChanged(ChangeEvent e) {
JTabbedPane sourceTabbedPane = (JTabbedPane) e.getSource();
int index = sourceTabbedPane.getSelectedIndex();
System.out.println("Tab changed to: " + index);
}
@Override
public void changed(ObservableValue arg0, Object arg1, Object arg2) {
// TODO Auto-generated method stub
}
};
tabbedPane.addChangeListener((javax.swing.event.ChangeListener) changeListener);
You're implementing the wrong ChangeListener
when you invoke new ChangeListener
. Check your imports. You should be implementing javax.swing.event.ChangeListener
but it looks like you're actually implementing javafx.beans.value.ChangeListener
.
If you don't want to change your imports, the following would work too.
javax.swing.event.ChangeListener changeListener = new javax.swing.event.ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
JTabbedPane sourceTabbedPane = (JTabbedPane) e.getSource();
int index = sourceTabbedPane.getSelectedIndex();
System.out.println("Tab changed to: " + index);
}
};
tabbedPane.addChangeListener(changeListener);