Converter um JPanel em uma imagem em um JScrollPane

Eu quero converter um JPanel em uma imagem. Eu usei o seguinte método:

public BufferedImage createImage(){

    int w = getWidth();
    int h = getHeight();
    BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
    Graphics2D g = bi.createGraphics();
    paint(g);
    return bi;
}

Mas o problema é que o JPanel está contido em um JScrollPane. Então, quando eu converto o jpanel em uma imagem, a imagem contém apenas as partes visíveis no jpanel e as partes que estão escondidas dentro do scrollpane não estão contidas na imagem.

Existe alguma solução para obter todo o conteúdo do JPanel em uma imagem?

questionAnswers(3)

yourAnswerToTheQuestion