Мой друг попросил меня помочь ему с Swing, и я дошел до того, что не могу решить проблему.
Итак, сначала у меня есть ImagePanel
public class ImagePanel extends JPanel {
private Image img;
public void setImage(String img) {
setImage(new ImageIcon(img).getImage());
}
public void setImage(Image img) {
int width = this.getWidth();
int height = (int) (((double) img.getHeight(null) / img.getWidth(null)) * width);
this.img = img.getScaledInstance(width, height, Image.SCALE_SMOOTH);
}
@Override
public void paintComponent(Graphics g) {
g.drawImage(img, 0, 0, null);
}
}
И FileChooser
, который должен открыть выбранное изображение в ImagePanel. Он просто вызывает setImage
из ImagePanel
. Но изображение не нарисовано. Нет комбинаций повторной печати, проверки и аннулирования справки.
Однако изображение отображается при изменении размера JFrame
(с помощью мыши).
Итак, вопрос в том, какой метод вызывается при изменении размера (с помощью мыши), что делает перерисовку ImagePanel
успешной.