通过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);}您能在调试器中弄清楚为什么监听器被触发了三遍吗?



