天天看點

程式添加JComboBox的item也能觸發itemStateChanged事件嗎

程式添加jcombobox的item也能觸發itemstatechanged事件嗎

直接看執行個體:

程式添加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 事件