I am still learning Java, if someone can help me I will be very happy!
Sorry for bad english, I am spanish! I am making a tile game, the game uses the classic \"game loo
"How to stop the auto-repaint() when I resize the Jframe"
Short answer, you don't control it. Longer answer, you need to make sure you aren't doing any thing that changes the state (you are using to paint), in the paintComponent
method. For example:
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Random random = new Random();
int x = random.nextInt(100);
int y = random.nextInt(100);
int size = random.nextInt(100);
g.drawRect(x, y, size, size);
}
What happens here is that every times the GUI repaints, which is not under your control, the rectangle will resize, without you wanting it to. So if you want the rectangle to only repaint when you tell it to, you need to make sure you only manipulate the state (i.e. x, y, size) from outside the paintComponent
method, and only use that state to paint. Something like
Random random = new Random();
int x, y, size;
...
void reset() {
x = random.nextInt(100);
y = random.nextInt(100);
size = random.nextInt(100);
}
...
Timer timer = new Timer(25, new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
reset();
repaint();
}
}).start();
...
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawRect(x, y, size, size);
}