Вы можете установить таймер в прослушивателе событий mouseDown и запускать его каждые 500 мс после начальной задержки 3000 мс. В вашей выпущенной мыши вы можете отменить этот таймер. В методе запуска объекта TimerTask
, связанного с вашим Timer
, вы можете выполнить расчет требуемой задачи. Вот мое предложение по решению:
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
public class Test
{
public static void main(String[] args)
{
final JFrame f = new JFrame();
String[] data = {"one", "two", "three", "four"};
JList myList = new JList(data);
f.add(myList);
myList.addMouseListener(
new MouseAdapter()
{
private java.util.Timer t;
public void mousePressed(MouseEvent e)
{
if(t == null)
{
t = new java.util.Timer();
}
t.schedule(new TimerTask()
{
public void run()
{
System.out.println("My importan task goes here");
}
},3000,500);
}
public void mouseReleased(MouseEvent e)
{
if(t != null)
{
t.cancel();
t = null;
}
}
}
);
f.pack();
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
f.setVisible(true);
}
}
);
}
}