当前位置: 首页 > 面试题库 >

JTabbedPane ChangeListener

陶星渊
2023-03-14
问题内容

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

以下代码可以运行,但是它会触发与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
    }
});

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


问题答案:

通过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);
}

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



 类似资料:

相关阅读

相关文章

相关问答