温馨提示:本文翻译自stackoverflow.com,查看原文请点击:java - JTabbedPane ChangeListener
changelistener java jtabbedpane swing

java - JTabbedPane ChangeListener

发布于 2020-03-27 10:48:40

我需要检测选定的选项卡何时更改,并获取其索引。

以下代码可以工作,但是它会触发与println当前加载的标签数量相同的次数:

tabbedPane.addChangeListener(new ChangeListener() {
    public void stateChanged(ChangeEvent e) {
        System.out.println("Tab: " + tabbedPane.getSelectedIndex());
        // Prints the string 3 times if there are 3 tabs etc
    }
});

正确的做法是什么?先感谢您。

查看更多

查看更多

提问者
vemv
被浏览
245
belgther 2011-07-24 05:30

通过JDK 6 Update 26(Windows 7 64位),以下示例代码仅获得一个事件:

public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    frame.setBounds(0, 0, 300, 400);
    frame.setLayout(null);
    final JTabbedPane tabbedPane = new JTabbedPane();
    tabbedPane.addTab("One", new JPanel());
    tabbedPane.addTab("Two", new JPanel());
    tabbedPane.addTab("Three", new JPanel());
    tabbedPane.addChangeListener(new ChangeListener() {
        public void stateChanged(ChangeEvent e) {
            System.out.println("Tab: " + tabbedPane.getSelectedIndex());
        }
    });
    tabbedPane.setBounds(0, 0, 300, 400);
    frame.add(tabbedPane);
    frame.setVisible(true);
}

您能在调试器中弄清楚为什么监听器被触发了三遍吗?