void jButton1_mouseClicked(MouseEvent e) {
    if(e.getClickCount() == 1){
      //处理单击事件
    }
    if(e.getClickCount() == 2){
      //处理双击事件
    }
  }

解决方案 »

  1.   

    本来双击事件是在一段较短的时间内(这个时间在java中也是可以调整的),单击的次数为2次,
      

  2.   

    namowen :
    你的做法在双击的同时也会触发单击事件
    不信你试试
      

  3.   

    肯定要激发单击事件的,除非你重写鼠标事件才有可能不激发;你可以不处理单击事件嘛,只处理双击,其实我觉得namowen 的意思就是这样。
    void jButton1_mouseClicked(MouseEvent e) {
        if(e.getClickCount() == 2){
          //处理双击事件
        }
      }
      

  4.   

    单击什么component来触发事件呢?
    对JTree来说,单击事件是由TreeSelectionListener,双击事件由MouseListener注册。这样就分开了。
    或者是
    if (e.getClickCount() == 2){
    //处理双击事件
    }
    else{
    //处理单击
    }
      

  5.   

    我操作是一个jview的图形,也就是相当于一个label,我单击的时候改变它的状态
    双击他的时候触发另一个事件
      

  6.   

    if (e.getClickCount() == 2){
    //处理双击事件
    return;
    }
    else{
    //处理单击
    }处理完双击后加上return,不就行了。
      

  7.   

    zhaolizu:
    单击是在你的双击事件之间触发的
      

  8.   

    哈,lwm, 我是你哥们,帮你顶一下
      

  9.   

    你加一个布尔标志,默认为假,双击时为真,单击为假,然后判断一下,作不同处理。这样在你判断点击几次时只是置位,什么都没做,置完位后再处理。
    全局:boolean doubleClick = false;
    ......
    if(e.getClickCount()==2)
    {
       doubleClick = true;
     } 
    if(doubleClick)
    {
     ..........
     }
     else
    ...............
    doubleClick = false;
      

  10.   

    pentax:
    不知道你石了没有,我试了一下,不好用,你看看我写的对不对
    public void mouseClicked(MouseEvent e){boolean doubleClick = false;
    if(e.getClickCount()==2)
    {
       doubleClick = true;
     } 
    if(doubleClick)
    {
       System.out.println("double click");
     }
     else
       System.out.println("click");
    }
    不知道我的理解对不对?请指教
      

  11.   

    我没试,你把doubleClick改为全局变量,不要放在函数里,否则每次进来它都重新设置,我帮你试一下吧。
      

  12.   

    老大,JAVA中有全局变量吗??
      

  13.   

    Sun 的官方不承认这是bug。
    Bug ID:8025329
    但我认为Sun的这个决定很失败
    Sun认为
     单击一定是选定
     双击一定是激活
    但很多时候
     单击不一定是选定
     双击不一定是激活
    Sun 官方网站上有解决方法,用Timer,但并不是很好
      

  14.   

    我试了一下,看来是激发两次事件,所以设置标志是没用的,但是可以通过时间延迟判断是否是双击,其实我觉得系统也是通过判断两次单击的时间间隔来确定是否是双击,但是具体两次双击之间事件间隔是多少我就不清楚了,但是这样一来可能会出现单击时事件处理会有点延迟,再就是你这种处理好象有点不太符合常规,因为一般除了处理双击时不会出现单击的处理,我觉得你最好还是改一下方案:import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import com.borland.jbcl.layout.*;public class Frame3 extends JFrame {
      JPanel contentPane;
      XYLayout xYLayout1 = new XYLayout();
      JButton jButton1 = new JButton();
      long oneClick = 0;
      long doubleClick = 0;
      //Construct the frame
      public Frame3() {
        enableEvents(AWTEvent.WINDOW_EVENT_MASK);
        try {
          jbInit();
        }
        catch(Exception e) {
          e.printStackTrace();
        }
      }
      //Component initialization
      private void jbInit() throws Exception  {
        //setIconImage(Toolkit.getDefaultToolkit().createImage(Frame3.class.getResource("[Your Icon]")));
        contentPane = (JPanel) this.getContentPane();
        jButton1.setText("jButton1");
        jButton1.addMouseListener(new java.awt.event.MouseAdapter() {
          public void mouseClicked(MouseEvent e) {
            jButton1_mouseClicked(e);
          }
        });
        contentPane.setLayout(xYLayout1);
        this.setSize(new Dimension(400, 300));
        this.setTitle("Frame Title");
        this.addMouseListener(new java.awt.event.MouseAdapter() {
          public void mousePressed(MouseEvent e) {
            this_mousePressed(e);
          }
        });
        contentPane.add(jButton1, new XYConstraints(118, 102, -1, -1));
      }
      //Overridden so we can exit when window is closed
      protected void processWindowEvent(WindowEvent e) {
        super.processWindowEvent(e);
        if (e.getID() == WindowEvent.WINDOW_CLOSING) {
          System.exit(0);
        }
      }  void jButton1_mouseClicked(MouseEvent e) {         this.doubleClick = e.getWhen();
             System.out.println(oneClick);
             System.out.println(doubleClick);
             if((this.doubleClick - this.oneClick)<5000)//暂为5000
                System.out.println("双击!");
             else
                System.out.println("单击");
          //this.oneClick = 0;//设回原始值。
          this.oneClick = this.doubleClick;
      }  void this_mousePressed(MouseEvent e) {
        System.out.println(e.getClickCount());
      }
    }
      

  15.   

    jupitor, give me, give me