0
我正在嘗試使河內解算器只是解決河內沒有任何鼠標事件的塔。問題是,當我移動矩形原始的遺骸時,即使重新繪製後。我搜索了網絡,並試圖改變代碼,但沒有工作。如果改變了任何東西,我在裏面使用一個帶有JPanel的JFrame。
我有我的磁盤類這裏只是一個帶顏色的矩形。在Swing JPanel中移動一個矩形:原始停留
class Disk extends Rectangle {
Color diskColour;
public Disk(int a, int b, int c, int d, Color colour) {
x = a;
y = b;
width = c;
height = d;
diskColour = colour;
}
public Color getColour() {
return diskColour;
}
public void paintSquare(Graphics g) {
repaint();
g.setColor(diskColour);
g.fillRect(x, y, width, height);
repaint();
}
}
這裏是我的代碼,我實際調用該方法paintSquare:
public void simpleMoveDisk(Disk[] disks, int n, Graphics g) {
disks[n].setLocation(30,25);
disks[n].paintSquare(g);
repaint();
}
的paintSquare方法繪製的磁盤,而setLocation方法改變其座標。 當這個運行矩形發生在新的位置,但舊的仍然存在。任何幫助表示讚賞,在此先感謝。
感謝您的答:我已根據您的答案更改了代碼,矩形仍然保留。 'public void simpleMoveDisk(Disk disks){ moves ++; disks.setLocation(20,30); }' – ultimateY 2011-03-17 14:01:23
然後您需要發佈SSCCE。 – jzd 2011-03-17 14:02:49
謝謝你的幫助。我發現了這個問題。這是因爲我初始化磁盤位置的initDisk方法被多次調用。即使移動了磁盤,磁盤也會重新初始化。確保它只運行一次後,原始消失。 – ultimateY 2011-03-17 14:17:17