this.addMouseListener(this); this.pack(); this.setVisible(true); } public static void main(String[] args){ new testClicked(); } public void paint(Graphics g){ if(bClick){ g.drawRect(50,50,100,100); } if(!bClick){ g.drawOval(10,10,100,100); } } public void mouseClicked(MouseEvent parm1) { // TODO: Add your code here if(parm1.getClickCount()==1){ bClick=true; repaint();} else if(parm1.getClickCount()==2){ bClick=false; repaint(); }
} public void mousePressed(MouseEvent parm1) { // TODO: Add your code here } public void mouseReleased(MouseEvent parm1) { // TODO: Add your code here } public void mouseEntered(MouseEvent parm1) { // TODO: Add your code here } public void mouseExited(MouseEvent parm1) { // TODO: Add your code here } }
不想给代码,楼主...--------------------------------------------------------------------------------long mouseDoubleClickThreshold = 300L; long mouseUpClickTime = 0; int clickCount=0;public void mouseClicked(MouseEvent event){ long eventTime = event.getWhen(); long timeDiff = eventTime - mouseUpClickTime; if ( timeDiff < 0 ) { timeDiff = -timeDiff; } if ( timeDiff < mouseDoubleClickThreshold) { mouseUpClickTime = 0; //写单击事件 } else { mouseUpClickTime = eventTime; //写双击事件 } } --------------------------------------------------------------------------------
zjq1980: 还是不行, 双击后,隔300ms后再双击,还是会出现先画矩形后画圆啊 import java.awt.event.*; import java.awt.event.MouseListener; import java.awt.event.MouseEvent; import java.awt.*;class testClicked extends Frame implements MouseListener{ boolean bClick=true; long mouseDoubleClickThreshold = 300L; long mouseUpClickTime = 0; int clickCount=0; testClicked(){
this.addMouseListener(this); this.pack(); this.setVisible(true); } public static void main(String[] args){ new testClicked(); } public void paint(Graphics g){ if(bClick){ g.drawRect(50,50,100,100); } if(!bClick){ g.drawOval(10,10,100,100); } } public void mouseClicked(MouseEvent parm1) { // TODO: Add your code here long eventTime = parm1.getWhen(); long timeDiff = eventTime - mouseUpClickTime; if ( timeDiff < 0 ) { timeDiff = -timeDiff; } if ( timeDiff > mouseDoubleClickThreshold) { mouseUpClickTime = eventTime; //写单击事件 bClick=true; repaint(); } else { mouseUpClickTime = eventTime; //写双击事件 bClick=false; repaint(); } } public void mousePressed(MouseEvent parm1) { // TODO: Add your code here } public void mouseReleased(MouseEvent parm1) { // TODO: Add your code here } public void mouseEntered(MouseEvent parm1) { // TODO: Add your code here } public void mouseExited(MouseEvent parm1) { // TODO: Add your code here } }
import java.awt.event.*; import java.awt.event.MouseListener; import java.awt.event.MouseEvent; import java.awt.*; import javax.swing.*;public class testClicked extends Frame implements MouseListener{ boolean bClick=true; testClicked(){ this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); this.addMouseListener(this); this.pack(); this.setVisible(true); } public static void main(String[] args){ new testClicked(); } public void paint(Graphics g){ if(bClick){ g.drawRect(50,50,100,100); } if(!bClick){ g.drawOval(10,10,100,100); } } public void mouseClicked(MouseEvent parm1) { final testClicked th=this; System.out.print("press"); // TODO: Add your code here if(parm1.getClickCount()==1){ bClick=true; int delay=500; Timer ti=new Timer(delay, new ActionListener(){ public void actionPerformed(ActionEvent e){ th.repaint(); } }); ti.setRepeats(false); ti.start(); } else if(parm1.getClickCount()==2){ bClick=false; //repaint(); }
} public void mousePressed(MouseEvent parm1) { // TODO: Add your code here } public void mouseReleased(MouseEvent parm1) { // TODO: Add your code here } public void mouseEntered(MouseEvent parm1) { // TODO: Add your code here } public void mouseExited(MouseEvent parm1) { // TODO: Add your code here } } 用Timer,当击第一下时,谁也不知道以后还会不会再击第二下,因此无法判断是单击还是双击,只好等待,
if (e.getClickCount() != 1) return;
双击事件里面
if (e.getClickCount() != 2) return;
import java.awt.event.*;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.awt.*;class testClicked extends Frame implements MouseListener{
boolean bClick=true;
testClicked(){
this.addMouseListener(this);
this.pack();
this.setVisible(true);
}
public static void main(String[] args){
new testClicked();
}
public void paint(Graphics g){
if(bClick){
g.drawRect(50,50,100,100);
}
if(!bClick){
g.drawOval(10,10,100,100);
}
}
public void mouseClicked(MouseEvent parm1) {
// TODO: Add your code here
if(parm1.getClickCount()==1){
bClick=true;
repaint();}
else if(parm1.getClickCount()==2){
bClick=false;
repaint();
}
} public void mousePressed(MouseEvent parm1) {
// TODO: Add your code here
} public void mouseReleased(MouseEvent parm1) {
// TODO: Add your code here
} public void mouseEntered(MouseEvent parm1) {
// TODO: Add your code here
} public void mouseExited(MouseEvent parm1) {
// TODO: Add your code here
}
}
long mouseUpClickTime = 0;
int clickCount=0;public void mouseClicked(MouseEvent event){
long eventTime = event.getWhen();
long timeDiff = eventTime - mouseUpClickTime;
if ( timeDiff < 0 ) {
timeDiff = -timeDiff;
}
if ( timeDiff < mouseDoubleClickThreshold) {
mouseUpClickTime = 0;
//写单击事件
} else {
mouseUpClickTime = eventTime;
//写双击事件
}
}
--------------------------------------------------------------------------------
还是不行,
双击后,隔300ms后再双击,还是会出现先画矩形后画圆啊
import java.awt.event.*;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.awt.*;class testClicked extends Frame implements MouseListener{
boolean bClick=true;
long mouseDoubleClickThreshold = 300L;
long mouseUpClickTime = 0;
int clickCount=0;
testClicked(){
this.addMouseListener(this);
this.pack();
this.setVisible(true);
}
public static void main(String[] args){
new testClicked();
}
public void paint(Graphics g){
if(bClick){
g.drawRect(50,50,100,100);
}
if(!bClick){
g.drawOval(10,10,100,100);
}
}
public void mouseClicked(MouseEvent parm1) {
// TODO: Add your code here
long eventTime = parm1.getWhen();
long timeDiff = eventTime - mouseUpClickTime;
if ( timeDiff < 0 ) {
timeDiff = -timeDiff;
}
if ( timeDiff > mouseDoubleClickThreshold) {
mouseUpClickTime = eventTime;
//写单击事件
bClick=true;
repaint();
} else {
mouseUpClickTime = eventTime;
//写双击事件
bClick=false;
repaint();
}
} public void mousePressed(MouseEvent parm1) {
// TODO: Add your code here
} public void mouseReleased(MouseEvent parm1) {
// TODO: Add your code here
} public void mouseEntered(MouseEvent parm1) {
// TODO: Add your code here
} public void mouseExited(MouseEvent parm1) {
// TODO: Add your code here
}
}
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.awt.*;
import javax.swing.*;public class testClicked extends Frame implements MouseListener{
boolean bClick=true;
testClicked(){
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
this.addMouseListener(this);
this.pack();
this.setVisible(true);
}
public static void main(String[] args){
new testClicked();
}
public void paint(Graphics g){
if(bClick){
g.drawRect(50,50,100,100);
}
if(!bClick){
g.drawOval(10,10,100,100);
}
}
public void mouseClicked(MouseEvent parm1) {
final testClicked th=this;
System.out.print("press");
// TODO: Add your code here
if(parm1.getClickCount()==1){
bClick=true;
int delay=500;
Timer ti=new Timer(delay, new ActionListener(){
public void actionPerformed(ActionEvent e){
th.repaint();
}
});
ti.setRepeats(false);
ti.start();
}
else if(parm1.getClickCount()==2){
bClick=false;
//repaint();
}
} public void mousePressed(MouseEvent parm1) {
// TODO: Add your code here
} public void mouseReleased(MouseEvent parm1) {
// TODO: Add your code here
} public void mouseEntered(MouseEvent parm1) {
// TODO: Add your code here
} public void mouseExited(MouseEvent parm1) {
// TODO: Add your code here
}
}
用Timer,当击第一下时,谁也不知道以后还会不会再击第二下,因此无法判断是单击还是双击,只好等待,