в другой программе у меня была такая же проблема, поэтому я дал вам то, что я пытаюсь сделать с меньшим классом, чтобы вы могли легче читать код. В основном, я пытаюсь изменить положение X, но, похоже, он просто становится больше.
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.RepaintManager;
public class test extends JPanel{
public int x = 200;
public int y = 620;
Rectangle cube = new Rectangle(x, y, 80, 80);
int cubex = cube.x;
public void paint(Graphics g){
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2d.fill(cube);
}
public void moveCube(){
cube.setLocation(cubex -= 1, y);
cube.setSize(80, 80);
repaint();
}
public static void main(String[] args) throws InterruptedException {
test t = new test();
JFrame frame = new JFrame();
frame.add(t);
frame.setSize(700, 1000);
frame.setVisible(true);
frame.setTitle("The Cube");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(true);
frame.setLocationRelativeTo(null);
frame.setBackground(new Color(240, 84, 84));
while(true){
t.moveCube();
Thread.sleep(10);
}
}
}
Большое спасибо за Вашу помощь :)
Я попробовал вашу программу. Вы правильно перемещаете объект, но вы не очищаете свой ранее окрашенный прямоугольник; таким образом, кажется, он расширяется.