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

注意,我要的效果就是:当点击某项时,这项的事件没有发生.切记是事件没有发生任何作用.哪位高手能给我一个可直接运行的简单例子.谢谢了!如果谁帮上了忙,并且你也在上海浦东的话... 注意,我要的效果就是:当点击某项时,这项的事件没有发生.切记是事件没有发生任何作用.哪位高手能给我一个可直接运行的简单例子.谢谢了!如果谁帮上了忙,并且你也在上海浦东的话,我可以请你吃饭的.这个题我请教过了很多人,要吗不是我想要的效果,要吗就是没理解我的意思.所以请仔细看清题了.
citytalent:这个方法早有人跟我说过,你大概是没理解我的意思.当我选222的时候,表面上看它没有在label上面显示数据,但它的事件还是发生了,因为JComboBox里面的值改变了.初使化的时候,JComboBox的值是111,当我选222的时候,它的值就变成222了,而我想要的效果是:当选222的时候,JComboBox没有发生任何改变.这才是真正的事件没有发生任何作用.不要跟我说当选222的时候, setSelectedIndex()为刚开始的那个值就行了,这也不是我想要的效果,因为这样,222这个选项的事件还是发生了.我想要的就是使JComboBox内部的某项选择事件失效.唯一的方法是重写JComboBox这个类.但很麻烦,所以请高手帮忙.
希望回答者能给个可直接运行的例子.里面有main方法的.
展开
 我来答
citytalent
2008-06-16 · TA获得超过1222个赞
知道小有建树答主
回答量:542
采纳率:0%
帮助的人:577万
展开全部
你可以看下下面的程序,我加了监听器,当你选中222的那个选项的时候没有任何事情发生,其实这个是在监听器中实现的,当我获得的item是222的时候我让监听器不做任何事情,如果是别的都在label上输出下,为了你直观看,其实还可以设置得更五花八门,也就是那个if判断,我判断不同的选项就响应不同的事情就可以了,比如我完全可以让选1关闭窗口,选2不响应,选3在label理显示,选4去控制台大印等等,就看你那个if怎么判断了,多几个if else if就搞定了

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Test52 extends JFrame implements ActionListener {
JComboBox jcb = new JComboBox();
JLabel jl = new JLabel("这里显示结果");

public Test52() {

jcb.addItem("111");
jcb.addItem("222");
jcb.addItem("333");
jcb.addItem("444");
jcb.addItem("5555");
jcb.addItem("6666");
jcb.addActionListener(this);
GridLayout gl = new GridLayout();
setLayout(gl);
add(jl);
add(jcb);

pack();
setLocation(200, 200);
setVisible(true);
}

public void actionPerformed(ActionEvent e) {
if (jcb.getSelectedItem()== "222") {

} else {
jl.setText("选项是:" + jcb.getSelectedItem());
}
}

public static void main(String[] args) {
new Test52();
}

}
2006021478
2008-06-16
知道答主
回答量:14
采纳率:0%
帮助的人:0
展开全部
那你为什么不用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());
}
});你别用监听接口就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
把我给自己
2008-06-21
知道答主
回答量:4
采纳率:0%
帮助的人:0
展开全部
我明白提问者的意思,她的意思是:更确切的说是:当点击222这个选项时,程序根本就没有进入到actionPerformed这个方法里面来。这才是真正的事件没有发生任何作用。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hamayuan
2008-06-16 · TA获得超过108个赞
知道答主
回答量:72
采纳率:0%
帮助的人:72.1万
展开全部
在事件的一开始加个判断
if(cbo.getselectIndex=="你想失效的项索引")
{
return;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhaobaohu666
2008-06-17 · 超过28用户采纳过TA的回答
知道答主
回答量:191
采纳率:0%
帮助的人:63.2万
展开全部
o
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式