Witam,
mam JScrollPane a w nim za pomocą JPanel wyświetlam BufferedImage używając obiektu LoadAndShow:

public class LoadAndShow extends JPanel {
	private static final long serialVersionUID = -6743404518730351924L;
	BufferedImage image;
    Dimension size = new Dimension();
 
    public LoadAndShow(BufferedImage image) {
        this.image = image;
        size.setSize(image.getWidth(), image.getHeight());
    }
 
    /**
     * Drawing an image can allow for more
     * flexibility in processing/editing.
     */
    protected void paintComponent(Graphics g) {
        // Center image in this component.
        int x = (getWidth() - size.width)/2;
        int y = (getHeight() - size.height)/2;
        g.drawImage(image, x, y, this);
    }
 
    public Dimension getPreferredSize() { return size; }
}

Ładowanie obrazka:

	private void setImagePreview(BufferedImage bufferedImage) {
		
		imageArea.getViewport().removeAll();
		if (bufferedImage != null) {
			imagePreview = new LoadAndShow(bufferedImage);
			imageArea.setViewportView(imagePreview);
		}
		this.validate();
	}

Cały problem polega na tym, że czasami jest taki efekt, że przy przełączaniu obrazków wokół JPanel (obrazka), a w JScrollPane pojawiają się śmieci (a dokładnie fragment głównego okna programu). Dziwne jest to, że pod Ubuntu wszystko jest ok, a tylko w Windows się tak dzieje. Jakieś podpowiedzi?