Я предполагаю, что вы хотите нарисовать квадрат с фиксированным size
, который остается в center
панели при изменении размера панели. Один из подходов к таким проблемам - начать с конца и работать задом наперед. Вы знаете о fillRect()
, поэтому запишите, что вам нужно, чтобы «заполнить пробелы», требуемые этим методом. Назовите center
координаты x
и y
. Верхний угол будет на половину size
вверх, а левый угол - на половину size
влево; ширина и высота квадрата будут просто size
:
g.fillRect(left, top, width, height);
g.fillRect(x - size/2, y - size/2, size, size);
Теперь вернитесь назад и выясните, что x
и y
- это половина ширины и высоты панели соответственно:
int x = getWidth() / 2;
int y = getHeight() / 2;
Теперь соберите все вместе в вашем paintComponent()
методе.