這裏是移動虛線畫完全從零動畫的一個小例子:
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