请问如何在双击的时候不触发单击事件?谢谢 void jButton1_mouseClicked(MouseEvent e) { if(e.getClickCount() == 1){ //处理单击事件 } if(e.getClickCount() == 2){ //处理双击事件 } } 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 本来双击事件是在一段较短的时间内(这个时间在java中也是可以调整的),单击的次数为2次, namowen :你的做法在双击的同时也会触发单击事件不信你试试 肯定要激发单击事件的,除非你重写鼠标事件才有可能不激发;你可以不处理单击事件嘛,只处理双击,其实我觉得namowen 的意思就是这样。void jButton1_mouseClicked(MouseEvent e) { if(e.getClickCount() == 2){ //处理双击事件 } } 单击什么component来触发事件呢?对JTree来说,单击事件是由TreeSelectionListener,双击事件由MouseListener注册。这样就分开了。或者是if (e.getClickCount() == 2){//处理双击事件}else{//处理单击} 我操作是一个jview的图形,也就是相当于一个label,我单击的时候改变它的状态双击他的时候触发另一个事件 if (e.getClickCount() == 2){//处理双击事件return;}else{//处理单击}处理完双击后加上return,不就行了。 zhaolizu:单击是在你的双击事件之间触发的 哈,lwm, 我是你哥们,帮你顶一下 你加一个布尔标志,默认为假,双击时为真,单击为假,然后判断一下,作不同处理。这样在你判断点击几次时只是置位,什么都没做,置完位后再处理。全局:boolean doubleClick = false;......if(e.getClickCount()==2){ doubleClick = true; } if(doubleClick){ .......... } else...............doubleClick = false; 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");}不知道我的理解对不对?请指教 我没试,你把doubleClick改为全局变量,不要放在函数里,否则每次进来它都重新设置,我帮你试一下吧。 老大,JAVA中有全局变量吗?? Sun 的官方不承认这是bug。Bug ID:8025329但我认为Sun的这个决定很失败Sun认为 单击一定是选定 双击一定是激活但很多时候 单击不一定是选定 双击不一定是激活Sun 官方网站上有解决方法,用Timer,但并不是很好 我试了一下,看来是激发两次事件,所以设置标志是没用的,但是可以通过时间延迟判断是否是双击,其实我觉得系统也是通过判断两次单击的时间间隔来确定是否是双击,但是具体两次双击之间事件间隔是多少我就不清楚了,但是这样一来可能会出现单击时事件处理会有点延迟,再就是你这种处理好象有点不太符合常规,因为一般除了处理双击时不会出现单击的处理,我觉得你最好还是改一下方案: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()); }} jupitor, give me, give me 这样限制了text的输入,就不能输入string型的数据? 小球运动路径问题 父类引用指向子类对象 请大家帮帮我吧!谢谢了! 如何获得文本域的内容然后输出到文件里? 【急】对象拷贝引用【在线求助】 怎样在JTable的单元格上渲染一个JTable ███急███在JBuilderX中run 一个jsp,出现 MAPPING configuration error for request URI 这个错误,请问高手,该如何解决啊? 如何用Applet连接Oracle数据库? 帮忙翻译下这小段代码 这段代码错在哪儿?谢谢! 标准送分题 请问JAVA有没有类似与MSDN的帮助资源
你的做法在双击的同时也会触发单击事件
不信你试试
void jButton1_mouseClicked(MouseEvent e) {
if(e.getClickCount() == 2){
//处理双击事件
}
}
对JTree来说,单击事件是由TreeSelectionListener,双击事件由MouseListener注册。这样就分开了。
或者是
if (e.getClickCount() == 2){
//处理双击事件
}
else{
//处理单击
}
双击他的时候触发另一个事件
//处理双击事件
return;
}
else{
//处理单击
}处理完双击后加上return,不就行了。
单击是在你的双击事件之间触发的
全局:boolean doubleClick = false;
......
if(e.getClickCount()==2)
{
doubleClick = true;
}
if(doubleClick)
{
..........
}
else
...............
doubleClick = false;
不知道你石了没有,我试了一下,不好用,你看看我写的对不对
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");
}
不知道我的理解对不对?请指教
Bug ID:8025329
但我认为Sun的这个决定很失败
Sun认为
单击一定是选定
双击一定是激活
但很多时候
单击不一定是选定
双击不一定是激活
Sun 官方网站上有解决方法,用Timer,但并不是很好
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());
}
}