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