如何使用MouseListener事件

时间:2013-07-15 13:48:09

标签: java mouselistener

我有一个主类在这个类中实现MouseListener和TimerTask。如何在MouseEnter事件中运行此代码。我的意思是当鼠标超过帧Timer任务将执行指定的时间

public class NewClass extends JPanel implements MouseListener {

 public NewClass() {
    JFrame frame=new JFrame();
    addMouseListener(this);
    Timer t=new Timer();
    TimerTask task=new TimerTask() {

        @Override
        public void run() {
             System.out.println("heloo");
        }
    };
   t.schedule(task, 1000);

   }


@Override
public void mouseEntered(MouseEvent me) {

}


public static  void main(String[]args){

    JFrame frame=new JFrame();
    frame.add(new NewClass());
    frame.setSize(300,300);
    frame.setVisible(true);
}

}

1 个答案:

答案 0 :(得分:1)

始终使用 Swing Timer 进行与GUI相关的任务,如javadoc所述:

  

一般情况下,我们建议使用Swing计时器而不是   用于GUI相关任务的通用计时器,因为Swing计时器全部   共享相同的,预先存在的计时器线程和GUI相关的任务   自动在事件派发线程上执行。但是,你   如果你不打算触摸,可能会使用通用计时器   从定时器GUI,或需要执行冗长的处理。

阅读完本教程后,您将了解我的所作所为:

import java.awt.event.*;
import javax.swing.*;
import java.awt.*;

public class TimerDemo extends JFrame {

    private static final long serialVersionUID = 1L;
    private javax.swing.Timer timer;

    public TimerDemo() {
        super("Panel Timer Demo");
        //initialing swing timer
        timer = new javax.swing.Timer(100, getButtonAction());
        JPanel p = new JPanel ();
        p.addMouseListener(new MouseAdapter(){
            @Override
            public void mouseEntered(MouseEvent ev){
                timer.start();
            }
            @Override
            public void mouseExited(MouseEvent ev){
                timer.stop();
                }
            });

          p.setBackground(Color.blue);

          getContentPane().add(p,BorderLayout.CENTER);
          setDefaultCloseOperation(3);
          setLocationRelativeTo(null);
          pack();
    }

    private ActionListener getButtonAction() {
        ActionListener action = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("Heloo");
            }
        };
        return action;
    }

    public static void main(String... args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new TimerDemo().setVisible(true);
            }
        });
    }
}