мой перекрас ();не очищает ранее нарисованные объекты - PullRequest
0 голосов
/ 13 октября 2018

Здравствуйте, я пытаюсь написать простую программу, которая позволяет мне перемещать прямоугольник на JFrame, моя проблема в том, что вместо перемещения прямоугольника вокруг него рисуется новый, оставляя другой позади, и я не знаю,почему это происходит, хотел бы немного помочь, вот мой текущий код для класса рисования:

public class frameUpdater extends JPanel implements ActionListener {

private Timer FPS;
private int frameDelay = 40;
private int xVal = 50;
private int yVal = 50;
private int SQUARE_SIZE = 30;

public frameUpdater() {
    FPS = new Timer(frameDelay, this);
    FPS.start();
}
@Override
public void paintComponent(Graphics g) {
    super.paintComponents(g);
    g.setColor(Color.GREEN);
    g.fillRect(xVal,yVal,SQUARE_SIZE,SQUARE_SIZE);


}

public void actionPerformed(ActionEvent e) {
    xVal += 5;
    repaint();
    System.out.println("updated");
}
}

А вот мой код для моего основного класса:

public class mainEngine {

public static void main(String[] args) {
    int FRAME_WIDTH = 500;
    int FRAME_HEIGHT = 400;

    frameUpdater s = new frameUpdater();
    JFrame mainFrame = new JFrame();

    mainFrame.setBackground(Color.BLACK);
    mainFrame.add(s);
    mainFrame.setVisible(true);
    mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    mainFrame.setSize(FRAME_WIDTH,FRAME_HEIGHT);

}

Очень благодарен залюбая помощь или советы, которые я могу получить.

1 Ответ

0 голосов
/ 13 октября 2018

мой перекрас ();не очищает ранее прорисованные объектыбиты должны быть удалены из изображения, а ваши нет:

@Override
public void paintComponent(Graphics g) {
    super.paintComponents(g);

должно быть

@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g); // note difference?
...