之所以会作两次,是因为,mouseclick会去做一次,而mouserelease时还会做一次,所以valuechange会被处理两次,不过这并不影响正常的使用,为什么会对这有疑问呢

解决方案 »

  1.   

    可是现在我要在valueChange()里记业务日志,每次我都要重复的记录两条,这样报表出来肯定是有毛病的。另外,撇开鼠标,我都过代码调用setSelectedIndex()方法,也会触发两次。请再给点指教,如何保证只触发一次。谢谢
      

  2.   

    那試一試這個:
    jlStatus.addMouseListener(new java.awt.event.MouseAdapter()
    {
        public void mouseClicked(MouseEvent evt)
        {
            if(evt.getModifiers()!=MouseEvent.BUTTON1_MASK)
                return;
            valuechange();
        }});
      

  3.   

    String oldvalue = "";
    public  void valueChanged(ListSelectionEvent e)
    {
        if(oldvalue.equals(jlStatus.getSelectedValue().toString()))
          return;
        oldvalue = jlStatus.getSelectedValue().toString();
    try
    {
    System.out.println("in valueChanged");
      

  4.   

    在valuechanged方法中,你判断e.getValueIsAdjusting(),有时为true,有时为false,应该可以解决你说的问题
      

  5.   

    用actionPerformed就可以了,在里面判断选择是否变化:
      
      String value = "";  void jComboBox1_actionPerformed(ActionEvent e) {
        if(!(value.equals(jComboBox1.getSelectedItem().toString()))){
          value= jComboBox1.getSelectedItem().toString();
          //
        }
      }
      

  6.   

    改為;
    定義全局編兩 int selectCount=-1;public  void valueChanged(ListSelectionEvent e)
    {
    try
    {
    System.out.println("in valueChanged");
    if(e.getSource() == jlStatus)
    {
    if(jlStatus.getSelectedIndex() == 0 && jlStatus.getSelectedIndex()!=selectCount)
    {
            selectCount=jlStatus.getSelectedIndex();
    System.out.println("swing:Ready");

    }

    if(jlStatus.getSelectedIndex() == 1 && jlStatus.getSelectedIndex()!=selectCount)
    {
            selectCount=jlStatus.getSelectedIndex();
    System.out.println("swing:Acw");

    }

    if(jlStatus.getSelectedIndex() == 2 && jlStatus.getSelectedIndex()!=selectCount)
    {
            selectCount=jlStatus.getSelectedIndex();
    System.out.println("swing:Busy");

    }

    if(jlStatus.getSelectedIndex() == 3 && jlStatus.getSelectedIndex()!=selectCount)
    {
            selectCount=jlStatus.getSelectedIndex();
    System.out.println("swing:Other");

    }
    }
    }
    catch(Exception ex)
    {
    System.out.println("error in valueChanged:" + ex);
    }
    }
      

  7.   

    public class testJList extends Applet implements ListSelectionListenerjlStatus.addListSelectionListener(this);
    个人认为是代码里加了两个ListSelectionListener!!
    把jlStatus.addListSelectionListener(this);
    或implements ListSelectionListener去掉!!
      

  8.   

    楼主问的好象是JList吧,有addActionListener这个方法吗?
      

  9.   

    在valueChanged()的开头加判断:if( e.getValueIsAdjusting())
       return;
      

  10.   

    你试一下这样,在我的机器上可以:
    还有我记得JList好像要加到一个JScrollPane上去的。jList1.addMouseListener(new java.awt.event.MouseAdapter() {
          public void mouseClicked(MouseEvent e) {
            jList1_mouseClicked(e);
          }
        });void jList1_mouseClicked(MouseEvent e) {
         if(e.getClickCount()==1)
            System.out.print("ok");
      }