在Swing里如何使JcomBobox(下拉列表框)中的某项不可选项,但其他的项仍然可选呢?

来源:百度知道 编辑:UC知道 时间:2024/06/06 16:19:32
注意,我要的效果就是:当点击某项时,这项的事件没有发生.切记是事件没有发生任何作用.哪位高手能给我一个可直接运行的简单例子.谢谢了!如果谁帮上了忙,并且你也在上海浦东的话,我可以请你吃饭的.这个题我请教过了很多人,要吗不是我想要的效果,要吗就是没理解我的意思.所以请仔细看清题了.
citytalent:这个方法早有人跟我说过,你大概是没理解我的意思.当我选222的时候,表面上看它没有在label上面显示数据,但它的事件还是发生了,因为JComboBox里面的值改变了.初使化的时候,JComboBox的值是111,当我选222的时候,它的值就变成222了,而我想要的效果是:当选222的时候,JComboBox没有发生任何改变.这才是真正的事件没有发生任何作用.不要跟我说当选222的时候, setSelectedIndex()为刚开始的那个值就行了,这也不是我想要的效果,因为这样,222这个选项的事件还是发生了.我想要的就是使JComboBox内部的某项选择事件失效.唯一的方法是重写JComboBox这个类.但很麻烦,所以请高手帮忙.
希望回答者能给个可直接运行的例子.里面有main方法的.

我明白提问者的意思,她的意思是:更确切的说是:当点击222这个选项时,程序根本就没有进入到actionPerformed这个方法里面来。这才是真正的事件没有发生任何作用。

在事件的一开始加个判断
if(cbo.getselectIndex=="你想失效的项索引")
{
return;
}

那你为什么不用JTextField!如果真是你那样就只能不安监听器了
这有一个下拉框
JLabel month=new JLabel("出生年代: ");
add(month);
String[] string ={"1980","1981","1982","1983","1984","1985","1986",
"1987","1988","1989","1990","1991","1992"};
year=new JComboBox(string);
year.setEditable(true);
add(year);
//监听接口
year.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
student.setBorthday((String)year.getSelectedItem());
}
});你别用监听接口就可以了

你可以看下下面的程序,我加了监听器,当你选中222的那个选项的时候没有任何事情发生,其实这个是在监听器中实现的,当我获得的item是222的时候我让监听器不做任何事情,如果是别的都在label上输出下,为了你直观看,其实