Предполагая, что вы переименуете метод, который рисует для 300x300, как paint300, определите буферизованное изображение:
@Override public void paint(Graphics g) {
Image bufferImage = createImage(300, 300); // empty image
paint300(bufferImage.getGraphics()); // fill the image
g.drawImage(bufferImage, 0, 0, null); // send the image to graphics device
}
Выше, когда вы хотите рисовать в полном размере (300x300).Если ваше окно изменено:
@Override public void paint(Graphics g) {
Image bufferImage = createImage(300, 300);
paint300(bufferImage.getGraphics());
int width = getWidth();
int height = getHeight();
CropImageFilter crop =
new CropImageFilter((300 - width)/2, (300 - height)/2 , width, height);
FilteredImageSource fis = new FilteredImageSource(bufferImage, crop);
Image croppedImage = createImage(fis);
g.drawImage(croppedImage, 0, 0, null);
}
Новые классы взяты из java.awt.image. *.
Я не тестировал этот код.Это просто, чтобы отправить вас в правильном направлении.