Ho ridefinito il componentPaint() in questo modo, usando questi metodi all'interno del JPanel
import java.awt.*;
import javax.swing.*;
public class MiddlePanel extends JPanel{
int paintWidth = 800;
int paintHeigth = 600;
public MiddlePanel(){
this.setLayout(new BorderLayout());
this.setBackground(Color.white);
this.setVisible(true);
}
@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.LIGHT_GRAY);
setPaintArea(g);
}
public void paintGrid(Graphics g){
for(int i=0;i<this.paintWidth;i+=20){
g.drawLine(i,0,i,this.paintHeigth);
g.drawLine(0,i,this.paintWidth,i);
}
}
public void setPaintArea(Graphics g){
paintGrid(g);
this.setPreferredSize(new Dimension(paintWidth+5,paintHeigth+5));
}
public int getPaintWidth(int Width){
if(paintWidth<Width)
paintWidth = Width;
return Width;
}
public int getPaintHeigth(int Heigth){
if(paintHeigth<Heigth)
paintHeigth = Heigth;
return Heigth;
}
}