我的重绘();不清除以前绘制的对象
my repaint(); does not clear previously drawn objects
你好,我正在尝试编写一个简单的程序,让我可以在 JFrame
上移动一个矩形,我的问题是,我没有移动矩形,而是绘制了一个新的矩形,留下了另一个矩形,然后我不知道为什么会这样,希望得到一些帮助,这是我当前的绘图代码 class:
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");
}
}
这是我的主要代码 class:
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);
}
非常感谢我能得到的任何帮助或提示。
my repaint(); does not clear previously drawn objects
当发生这种情况时,请始终查看您是否正确调用了 super 的绘画方法以及在正确的位置,因为您的绘画方法必须调用适当的 super 方法来清除图像中的脏位,而您的不是:
@Override
public void paintComponent(Graphics g) {
super.paintComponents(g);
应该是
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g); // note difference?
你好,我正在尝试编写一个简单的程序,让我可以在 JFrame
上移动一个矩形,我的问题是,我没有移动矩形,而是绘制了一个新的矩形,留下了另一个矩形,然后我不知道为什么会这样,希望得到一些帮助,这是我当前的绘图代码 class:
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");
}
}
这是我的主要代码 class:
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);
}
非常感谢我能得到的任何帮助或提示。
my repaint(); does not clear previously drawn objects
当发生这种情况时,请始终查看您是否正确调用了 super 的绘画方法以及在正确的位置,因为您的绘画方法必须调用适当的 super 方法来清除图像中的脏位,而您的不是:
@Override
public void paintComponent(Graphics g) {
super.paintComponents(g);
应该是
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g); // note difference?