开发者

Clearing JPanel

开发者 https://www.devze.com 2023-04-04 20:30 出处:网络
I am making a program in which there is a square that changes its x and y positions when a key is pressed. The square move开发者_Go百科s but the the old square is still there. How do I remove/clear ev

I am making a program in which there is a square that changes its x and y positions when a key is pressed. The square move开发者_Go百科s but the the old square is still there. How do I remove/clear everything from a panel before I repaint it? Calling removeAll had no effect.


Presumably your code includes custom paintComponent() logic. The key thing to observe is what does your panel look like when you do not override paintComponent()? An empty (or cleared) panel:

Thus the solution is to invoke the paintComponent() method of the parent type on the panel, before executing your custom paintComponent() logic:

public class CustomPanel extends JPanel {
  @Override
  public void paintComponent(Graphics g) {
    super.paintComponent(g); // first draw a clear/empty panel
    // then draw using your custom logic.
  }
}


I think this should work.

g.clearRect (0, 0, panel.getWidth(), panel.getHeight());

Also, you could keep the old location of the square and just clear that rather than clear the whole background.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号