ChangeListener不按预期方式工作JTabbedPane
问题描述:
我想检测选项卡何时发生变化并检索选定的索引。我所能找到的所有例子都显得过时,并且我无法成功实现它们。ChangeListener不按预期方式工作JTabbedPane
它强制我将changeListener转换为javax.swing.event.ChangeListener,但同时不让我编译它。我哪里错了?
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);
答
你执行了错误的ChangeListener
当你调用new ChangeListener
。检查你的进口。您应该实施javax.swing.event.ChangeListener
,但看起来您实际上正在实施javafx.beans.value.ChangeListener
。
如果你不想改变你的导入,下面也会有效。
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);
答
正在导入错误的ChangeListener
- 检查相应的导入语句。它应该是
import javax.swing.event.ChangeListener;
// or import javax.swing.event.*;
也许是错误的类正在被导入为:
import javafx.beans.value.ChangeListener;
// or import javafx.beans.value.*;
如果正在需要这些进口(JavaFX的),您必须在创建侦听器时使用完全合格的类名:
javax.swing.event.ChangeListener changeListener =
new javax.swing.event.ChangeListener() {
...