我不知道为什么我会收到警告'来自类型new ChangeListener(){}的方法tabChanged(ChangeEvent)从不在本地使用'
private void setUpTabbedPane() {
this.tabbedPane = new JTabbedPane();
this.tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
String titles[] = { "A", "B", "C", "D", "E", "F" };
for (int i = 0, n = titles.length; i < n; i++) {
addTabs(this.tabbedPane, titles[i]);
}
this.tabbedPane.addChangeListener(new ChangeListener() {
public void tabChanged(ChangeEvent ev) {
try {
mediaPlayer.stop();
} catch (Exception e) {
System.out.println("Sorry, something went wrong.");
e.printStackTrace();
}
}
@Override
public void stateChanged(ChangeEvent e) {
// TODO Auto-generated method stub
}
});
}
答案 0 :(得分:1)
如警告所示,您已在ChangeListener中声明了一个方法tabChanged(),该方法在任何地方都没有被引用,并且永远不会被任何人调用。
如果您希望在发生更改时运行代码,则必须覆盖ChangeListener的 stateChanged 方法(如https://docs.oracle.com/javase/7/docs/api/javax/swing/event/ChangeListener.html中所述) 而不是像你现在所做的那样声明一种新方法。
只需将名称从tabChanged()更改为stateChanged(),IMHO就足以使此代码正常工作。