这里是移动虚线画完全从零动画的一个小例子:
private static int speed = 5;
public static void main (String[] args)
{
JFrame frame = new JFrame();
frame.setLayout (new BorderLayout());
frame.add (new JComponent()
{
private int diff = 0;
{
final Timer timer = new Timer (1000/(10 * speed), null);
timer.addActionListener (new ActionListener()
{
public void actionPerformed (ActionEvent e)
{
if (diff < 20)
{
diff++;
}
else
{
diff = 0;
}
repaint();
timer.setDelay (1000/(10 * speed));
}
});
timer.start();
}
protected void paintComponent (Graphics g)
{
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint (RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setStroke (
new BasicStroke (5f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 1f,
new float[]{ 10f, 10f }, diff));
g2d.setPaint (Color.BLACK);
g2d.drawLine (0, getHeight()/2, getWidth(), getHeight()/2);
}
});
frame.add (new JSlider (JSlider.HORIZONTAL, 1, 10, speed)
{
{
addChangeListener (new ChangeListener()
{
public void stateChanged (ChangeEvent e)
{
speed = getValue();
}
});
}
}, BorderLayout.SOUTH);
frame.setSize (500, 500);
frame.setLocationRelativeTo (null);
frame.setVisible (true);
}
基本上动画,你需要画你最想动画的东西。在你的情况下,如果它是两个虚线连接的对象 - 你可以使用容器来绘制连接,并且只需简单的Swing组件就可以了。因此它会检测到它们的边界并绘制连接线...
* “最好的问候ACoder” *请留下SIGS。出问题。 – 2012-04-12 20:05:39