当前位置: 代码迷 >> J2SE >> java中的ItemEvent和ActionEvent冲突如何解决
  详细解决方案

java中的ItemEvent和ActionEvent冲突如何解决

热度:171   发布时间:2016-04-24 12:36:40.0
java中的ItemEvent和ActionEvent冲突怎么解决?
一个程序,单击列表时显示商品的价格和产地,双击列表时显示广告而不显示其它。但是双击完后却显示了商品的价格和产地。我认为是双击包含了单击,
覆盖了双击的内容。怎么解决,以下是代码,问问高手,谢谢.
Java code
  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(); }} 



------解决方案--------------------
Java code
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" + "产自厦门");            }        }    }});
  相关解决方案