java中的ItemEvent和ActionEvent冲突怎么解决?

sandbad0x 2009-08-18 12:56:46
一个程序,单击列表时显示商品的价格和产地,双击列表时显示广告而不显示其它。但是双击完后却显示了商品的价格和产地。我认为是双击包含了单击,
覆盖了双击的内容。怎么解决,以下是代码,问问高手,谢谢.
  
import java.awt.*;
import java.awt.event.*;
class MyFrame extends Frame implements ItemListener, ActionListener
{
List list;
TextArea text;
MyFrame()
{
list=new List(4,false); //list有四个商品名称
text=new TextArea(20,20); //text输出单击或双击结果
list.add("苹果");
list.add("香蕉");
list.add("桃子");
list.add("芒果");
add(list,BorderLayout.NORTH);
add(text,BorderLayout.CENTER);
list.addItemListener()
list.addActionListener()
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
setVisible(true);
setBounds(100,100,300,300);
validate();
}
public void itemStateChanged(ItemEvent e) //实现单击时显示商品价格和产地
{
//text.setText(null);
text.setText(list.getSelectedItem()+":\n");
int n=list.getSelectedIndex();
if(n==0)
{
text.append("5元/斤\n"+"产自澳大利亚");
}
else if(n==1)
{
text.append("8元/斤\n"+"产自巴拿马");
}
else if(n==2)
{
text.append("4元/斤\n"+"产自台湾");
}
else
{
text.append("9/元/斤\n"+"产自厦门");
}
}

public void actionPerformed(ActionEvent ee) //实现双击时显示广告而不显示其他内容
{
//text.setText(null);
int k=list.getSelectedIndex();
//text.setText(list.getSelectedItem()+":\n");
if(k==0)
{
text.setText("ad1:aaa");
}
else if(k==1)
{
text.setText("ad2:bbb");
}
else if(k==2)
{
text.setText("ad3:ccc");
}
else
{
text.setText("ad4:ddd");
}
}

}
class E_7_10
{
public static void main(String args[])
{
new MyFrame();
}
}

...全文
127 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongke1490 2009-08-18
  • 打赏
  • 举报
回复

list.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) {
if(e.getClickCount() == 1){
int k = list.getSelectedIndex();
// text.setText(list.getSelectedItem()+":\n");
if (k == 0) {
text.setText("ad1:aaa");
} else if (k == 1) {
text.setText("ad2:bbb");
} else if (k == 2) {
text.setText("ad3:ccc");
} else {
text.setText("ad4:ddd");
}
} else if(e.getClickCount() == 2){
text.setText(list.getSelectedItem() + ":\n");
int n = list.getSelectedIndex();
if (n == 0) {
text.append("5元/斤\n" + "产自澳大利亚");
} else if (n == 1) {
text.append("8元/斤\n" + "产自巴拿马");
} else if (n == 2) {
text.append("4元/斤\n" + "产自台湾");
} else {
text.append("9/元/斤\n" + "产自厦门");
}
}
}
});
sandbad0x 2009-08-18
  • 打赏
  • 举报
回复
不好意思这几行代码忘改了:
list.addItemListener()
list.addActionListener()
改为
list.addItemListener(this);
list.addActionListener(this);
改后就可以运行了
一头头 2009-08-18
  • 打赏
  • 举报
回复
楼主 你这个程序可以运行的?

itemStateChanged actionPerformed 你加哪里了啊?
已经博主授权,源码转载自 https://pan.quark.cn/s/a4b39357ea24 ### TDS 2014示波器使用手册知识点总结 #### 一、TDS 1000B 和 TDS 2000B 系列数字存储示波器概述 - **产品系列**: TDS 1000B 和 TDS 2000B 是由 Tektronix 公司所研发并推出的数字存储示波器产品线。 - **功能定位**: 主要致力于为电子工程师以及研发人员提供具备高性能与高精度的信号测量设备。 - **应用领域**: 此类设备被普遍应用于教育机构、研发实验室以及工业生产过程的测试环节。 #### 二、TDS 2014示波器基本操作与使用 - **开机与基本设置**: - 在启动设备时,必须确保仪器已经正确接地。 - 在使用之前,需要根据观察需求设定合适的屏幕亮度、对比度等显示参数。 - **通道选择与配置**: - 可以通过触摸显示屏或设备前面板上的按钮来选定需要进行的测量通道。 - 可依据实际需求来调整垂直灵敏度、水平时间基准等设置项。 - **触发设置**: - 触发模式包括自动、常态、单次等多种选择。 - 触发源与阈值设定涉及确定触发信号的具体来源及其电压阈值水平。 - **测量与分析功能**: - 提供多种自动测量功能选项,涵盖电压峰峰值、频率等参数的测量。 - 支持对波形进行数学运算,例如执行两个波形的相加或相减操作。 #### 三、TDS 2014示波器高级特性 - **波形捕获率**: - 波形捕获率越高,意味着在检测偶发事件方面的能力越强。 - **波形存储与回放**: - 支持将波形数据存储到内部存储单元或外部存储设备。 - 用户能够随时调取先前保存的波形数据,以进行深入分析。 - *...

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧