【问题标题】:Why is ChangeListener never used locally?为什么 ChangeListener 从来没有在本地使用过?
【发布时间】:2017-05-13 16:04:11
【问题描述】:

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

                }
            });

        }

【问题讨论】:

    标签: java swing actionlistener changelistener


    【解决方案1】:

    您已经声明了一个“孤立”方法

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

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

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

    【讨论】:

    • 不要忘记添加@Override 注释,它也会捕获此类“孤立”方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 2014-01-30
    相关资源
    最近更新 更多