67,513
社区成员
发帖
与我相关
我的任务
分享
package com.bona.spark.ui.adapter;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
/**
* Created by bona on 2015/12/21.
* 鼠标悬停超过一定时长,将触发mouseHovering
*/
public abstract class MouseHoverAdapter extends MouseAdapter implements ActionListener{
public static final int M_SEC = 100;
private final Timer timer;
public final static int HOVERING_INTERVAL=3* M_SEC;
private MouseEvent lastEvent;
public MouseHoverAdapter() {
this(HOVERING_INTERVAL);
}
public MouseHoverAdapter(int delay) {
this.timer = new Timer(delay, this);
}
@Override
public void mouseEntered(MouseEvent e) {
lastEvent=e;
timer.start();
}
@Override
public void mouseMoved(MouseEvent e) {
lastEvent=e;
timer.restart();
}
@Override
public void mouseExited(MouseEvent e) {
lastEvent=e;
timer.stop();
}
@Override
public void actionPerformed(ActionEvent e) {
timer.stop();
mouseHovering(lastEvent);
}
public abstract void mouseHovering(MouseEvent e) ;
}
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.Calendar;
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.Timer;
public class MyFrame extends JFrame {
private Date lastTime;
public Date getLastTime() {
return lastTime;
}
public void setLastTime(Date lastTime) {
this.lastTime = lastTime;
}
public void createAndShowUI(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane = getContentPane();
addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
lastTime = Calendar.getInstance().getTime();
}
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
lastTime = null;
}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
});
setPreferredSize(new Dimension(300,200));
pack();
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
final MyFrame frame = new MyFrame();
frame.createAndShowUI();
ActionListener listener = new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(frame.getLastTime()!=null){
Date last = frame.getLastTime();
Date now = Calendar.getInstance().getTime();
if((now.getTime()-last.getTime())>3000){
System.out.println("悬浮了3秒");
}
}
}
};
int delay = 1000;
Timer timer = new Timer(delay,listener);
timer.start();
}
}