我试图在Swing
中使用Java
来操纵业余动画。我的目标是,如果我将鼠标悬停在某个button
上,就会启动动画。那很简单。但问题是,我想根据按钮的坐标来操纵动画计时器的速度。
例如,我对button
越正确,动画越快(延迟时间减少),反之亦然。如果我将箭头移出按钮然后再次输入,我编写的代码就可以工作。然后延迟根据坐标而变化。但是如果我在按钮区域内移动箭头则不行。我在这里使用了mouseEntered
。这可能会导致问题。但是mouseMove
函数似乎也不起作用。
这是我的代码:
private void jButton1MouseEntered(java.awt.event.MouseEvent evt)
{
// TODO add your handling code here:
PointerInfo inf = MouseInfo.getPointerInfo();
Point a = inf.getLocation();
double x = a.getX();
final int n = (int) (x - 161);
//String str=""+x;
//Output.setText(str);
ActionListener taskPerformer = null;
taskPerformer = new ActionListener()
{
@Override
public void actionPerformed(ActionEvent evt)
{
//...Perform a task...
//if(t>0)timer.setDelay(1000);
if (t > 0)
{
timer.setDelay(500 + 50 * n);
}
if (label1 == 0)
{
jTextField1.setText(" A");
}
else if (label1 == 1)
{
jTextField1.setText(" B");
}
else if (label1 == 2)
{
jTextField1.setText(" C");
}
else if (label1 == 3)
{
jTextField1.setText(" D");
}
else if (label1 == 4)
{
jTextField1.setText(" E");
}
else if (label1 == 5)
{
jTextField1.setText(" F");
}
else if (label1 == 6)
{
jTextField1.setText(" G");
}
if (label1 >= 7)
{
label1 = 0;
}
else
{
label1++;
}
t++;
//System.out.printf("Reading SMTP Info. %d\n",x);
//System.out.printf("Reading SMTP Info. %d\n",label1t);
//jLabel3.setText("fsd");
}
private Object getContentPane()
{
throw new UnsupportedOperationException("Not supported yet.");
}
};
timer = new Timer(500, taskPerformer);
timer.start();
//timer.setRepeats(false);
try
{
Thread.sleep(10);
}
catch (InterruptedException ex)
{
Logger.getLogger(Keyboard_Gui.class.getName()).log(Level.SEVERE, null, ex);
}
}
答案 0 :(得分:0)
但是mouseMove函数似乎也不起作用。
mouseMoved
事件由MouseMotionListener
(不是MouseListener)生成,因此您还需要实现该侦听器来操作Timer间隔。