程序添加JComboBox的item也能触发itemStateChanged事件吗
直接看实例:
package share; import java.awt.EventQueue; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import com.string.widget.util.ValueWidget; public class TestJComboBox extends JFrame { private JPanel contentPane; private JComboBox<String> comboBox; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { TestJComboBox frame = new TestJComboBox(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public TestJComboBox() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); GridBagLayout gbl_contentPane = new GridBagLayout(); gbl_contentPane.columnWidths = new int[]{0, 0, 0}; gbl_contentPane.rowHeights = new int[]{0, 0}; gbl_contentPane.columnWeights = new double[]{1.0, 0.0, Double.MIN_VALUE}; gbl_contentPane.rowWeights = new double[]{0.0, Double.MIN_VALUE}; contentPane.setLayout(gbl_contentPane); comboBox = new JComboBox<String>(); GridBagConstraints gbc_comboBox = new GridBagConstraints(); gbc_comboBox.insets = new Insets(0, 0, 0, 5); gbc_comboBox.fill = GridBagConstraints.HORIZONTAL; gbc_comboBox.gridx = 0; gbc_comboBox.gridy = 0; contentPane.add(comboBox, gbc_comboBox); JButton btnAddItem = new JButton("add item"); GridBagConstraints gbc_btnAddItem = new GridBagConstraints(); gbc_btnAddItem.gridx = 1; gbc_btnAddItem.gridy = 0; contentPane.add(btnAddItem, gbc_btnAddItem); comboBox.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent arg0) { System.out.println("itemStateChanged"); } }); init222(); } private void init222(){ comboBox.addItem("a"); comboBox.addItem("b"); comboBox.addItem("c"); } }
?
启动的时候,控制台打印:
itemStateChanged
说明启动之后,执行了itemStateChanged 方法,说明了触发了itemStateChanged 事件.
总结:程序添加addItem 也能触发itemStateChanged 事件
如何把init222 方法放在comboBox.addItemListener 前就不会触发itemStateChanged 事件
?
程序添加JComboBox的item也能触发itemStateChanged事件吗
原文:http://hw1287789687.iteye.com/blog/2250207