以下为正常情况的代码:
import java.awt.*;
import javax.swing.*;
public class Test extends JFrame{
public Test(){ //构造方法
JLabel label=new JLabel("666"); //创建标签
Container container=getContentPane(); //窗体转容器
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //关闭方式
setSize(200,150); //设置窗体大小
JComboBox<String> colorchoice =new JComboBox<>(new MyComboBox()); //创建下拉列表框
setVisible(true); //可见
container.add(BorderLayout.NORTH,colorchoice);
container.add(BorderLayout.SOUTH,label);
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
new Test();
}
}
class MyComboBox extends AbstractListModel<String> implements ComboBoxModel<String>{ //自定义下拉列框
String selecteditem=null;
String[] choice={"蓝","红","绿"};
public String getElementAt(int index){ //重写的方法
return choice[index];
}
public int getSize(){ //重写的方法
return choice.length;
}
public void setSelectedItem(Object item){ //重写的方法
selecteditem=(String)item;
}
public Object getSelectedItem(){ //重写的方法
return selecteditem;
}
}
以上代码没问题,运行出来结果如下:
但是只要将setVisible(true); 放在创建下拉列表框语句
JComboBox<String> colorchoice =new JComboBox<>(new MyComboBox());
后面,就会出现下面情况
为什么会这样?谢谢