java - ChangeListener 未按 JTabbedPane 的预期工作

标签 java swing changelistener

我想检测选项卡何时更改并检索所选索引。我找到的所有示例似乎都已过时,并且我无法成功实现它们。

它迫使我将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);

最佳答案

当您调用new ChangeListener时,您实现了错误的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);

关于java - ChangeListener 未按 JTabbedPane 的预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44271893/

相关文章:

java - Java 中 lambda 表达式的错误转换

java - 读取带有波兰语字母的 ANSI 文件并在没有口音的情况下在控制台中显示

java - 检查 libGDX 中的网络连接

java - JLabel.setText() 仅为循环中的最后一个元素设置文本

java - 消除滚动文本的闪烁/抖动

java - 如何通过将 ChangeListener 添加到 JSlider 来更新整型变量

java - 如何将 Java ChangeListener 添加到方法返回

java - Java 中类似 ADT 的多态性(不改变类)

java - 如何安装必要的库以在 Android Studio 中使用 MultipartEntity?

java - 如何根据其他列数据禁用 jtable 复选框