程序添加jcombobox的item也能触发itemstatechanged事件吗
直接看实例:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuIXY0N3Xu92Yp9CXzV2Zh1WavwVbvNmLllXZ0lmL3gjN5gzN3gjMxcHavw1LcpDc0RHaiojIsJye.png)
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 事件