1
我一直在玩Java的2D繪畫工具,並遇到了一個障礙。我正在嘗試移動這些對象。下面是代碼:Java繪製的對象沒有正確更新
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Test extends JPanel{
private int[] location = new int[2];
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.red);
g.fillArc(location[0], location[1], 100, 100, 45, 90);
g.setColor(Color.black);
g.fillArc((location[0]+50-10),(location[1]+50-10), 20, 20, 0, 360);
new Timer(2000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
setLocation((location[0]+50),50);
repaint();
System.out.println("repainting");
}
}).start();
}
public void setLocation(int x, int y){
this.location[0] = x;
this.location[1] = y;
}
public static void main(String[] args){
JFrame jf=new JFrame();
jf.setDefaultCloseOperation
(JFrame.EXIT_ON_CLOSE);
jf.setPreferredSize(new Dimension(300,500));
jf.setLocation(100,100);
jf.add(new Test());
jf.pack();
jf.setVisible(true);
}
}
這僅塗料兩個對象在屏幕中的一個......它似乎是第二個當我改變setLocation的[1]所述一個物體上的參數它作爲油漆移動。有什麼想法嗎?謝謝
編輯:編輯上面的代碼,以反映下面說的。
是的,它並不打算按原樣移動。我只是在設置自己的位置並試圖旋轉它們。不過,我一定會用你提供的名單幫助我實現這個目標。謝謝 ! –
有一件事 - 我所有的方法都是公開的......我在這裏錯過了什麼? –
@PeterF:是的,你的Location字段(應該重新命名爲「location」,小寫字母「l」)應該是** private **,不公開。但是你的'setLocation(...)'方法看起來不錯。 –