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;
}
}