为什么ChangeListener从未在本地使用过?

时间:2017-05-13 16:04:11

标签: java swing actionlistener changelistener

我不知道为什么我会收到警告'来自类型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

                }
            });

        }

1 个答案:

答案 0 :(得分:1)

你已经宣布了一个孤儿&#39;方法

如警告所示,您已在ChangeListener中声明了一个方法tabChanged(),该方法在任何地方都没有被引用,并且永远不会被任何人调用。

如果您希望在发生更改时运行代码,则必须覆盖ChangeListener的 stateChanged 方法(如https://docs.oracle.com/javase/7/docs/api/javax/swing/event/ChangeListener.html中所述)  而不是像你现在所做的那样声明一种新方法。

只需将名称从tabChanged()更改为stateChanged(),IMHO就足以使此代码正常工作。