如何让JComboBox中的某项不可选但其他的项可选.
我是想让这个事件没起作用.下面这位朋友,你做得不行.因为第四项还是可以选的.我是想让它不能选.当点击第四项的时候,相当于它的事件没有起到任何作用.记住,是该事件没有起到任...
我是想让这个事件没起作用.下面这位朋友,你做得不行.因为第四项还是可以选的.我是想让它不能选.当点击第四项的时候,相当于它的事件没有起到任何作用.记住,是该事件没有起到任何作用.提示:要重写JCombox组件中的事件.但是具体我不知道怎么写.所以请高手帮忙.如果你写出来了,别说再给你加20分了,我所有的分都可以给你.
展开
2个回答
展开全部
请读代码行上的注释.如果认为可行,请加分至100,谢谢
---------
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
final public class StrangeCombox extends JFrame {
private JComboBox combox;
private Option[] datas;
public StrangeCombox() throws HeadlessException {
init();doLay();attachListeners();
}
private void init(){
combox = new JComboBox(datas = new Option[]{
new Option(1,"first"),
new Option(2,"second"),
new Option(3,"third"),
new Option(4,"fourth"),
new Option(5,"fifth")
});
}
private void doLay(){
getContentPane().add(combox,BorderLayout.CENTER);
pack();
setVisible(true);
}
private void attachListeners(){
combox.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e) {
Object item = e.getItem();
//第四个选项被选中时候不打印选中条目的 toString() 方法的返回结果
if (e.getStateChange() == ItemEvent.SELECTED &&
!item.equals(datas[3])) {
((JComboBox)e.getSource()).dispatchEvent(e);
//请观察此条打印在运行期间的表现情况
System.out.println(e.getItem());
}
}
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
final private class Option{
private int code;private String name;
private Option(int c,String n){code=c;name=n;}
public String toString(){return name;}
private int getCode(){return code;}
public boolean equals(Object obj) {
return obj != null &&
obj instanceof Option &&
((Option)obj).getCode()==code;
}
}
public static void main(String[] args) {new StrangeCombox();}
}
---------
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
final public class StrangeCombox extends JFrame {
private JComboBox combox;
private Option[] datas;
public StrangeCombox() throws HeadlessException {
init();doLay();attachListeners();
}
private void init(){
combox = new JComboBox(datas = new Option[]{
new Option(1,"first"),
new Option(2,"second"),
new Option(3,"third"),
new Option(4,"fourth"),
new Option(5,"fifth")
});
}
private void doLay(){
getContentPane().add(combox,BorderLayout.CENTER);
pack();
setVisible(true);
}
private void attachListeners(){
combox.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e) {
Object item = e.getItem();
//第四个选项被选中时候不打印选中条目的 toString() 方法的返回结果
if (e.getStateChange() == ItemEvent.SELECTED &&
!item.equals(datas[3])) {
((JComboBox)e.getSource()).dispatchEvent(e);
//请观察此条打印在运行期间的表现情况
System.out.println(e.getItem());
}
}
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
final private class Option{
private int code;private String name;
private Option(int c,String n){code=c;name=n;}
public String toString(){return name;}
private int getCode(){return code;}
public boolean equals(Object obj) {
return obj != null &&
obj instanceof Option &&
((Option)obj).getCode()==code;
}
}
public static void main(String[] args) {new StrangeCombox();}
}
启帆信息
2024-11-19 广告
2024-11-19 广告
启帆信息是英伟达中国区代理商,原厂授权代理,提供全面的软件技术解决方案以及NVIDIA以太网产品、交换机等产品,欢迎前来咨询!...
点击进入详情页
本回答由启帆信息提供
2008-04-23
展开全部
构造一个按钮组组件ButtonGroup
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询