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?