Я написал свой собственный ImagePanel, используя одну из предыдущих тем здесь:Показаны изображения с помощью JPanel
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
public class ImagePanel extends JPanel{
private BufferedImage image = null;
public ImagePanel(BufferedImage im) {
image = im;
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, null);
}
}
И тогда я подумал, что было бы неплохо добавить эту панель на нормальных JPanel (было бы легче поместите его на фрейм, используя все это все вещи NetBeans). Поэтому я добавил один, NetBeans генерироваться мне код: private javax.swing.JPanel pnlImagePanel;
И вот наступает момент, когда я хотел бы показать изображение, так:
File selectedFile = new File(path);
try {
image = ImageIO.read(selectedFile);
} catch(IOException ex) {
throw new RuntimeException(ex);
}
ImagePanel imPanel = new ImagePanel(image);
this.pnlImagePanel = imPanel;
this.pnlImagePanel.repaint();
Проблема очевидна - я не получил никакого результата. Разве это не работает? Я переоценил метод paintComponent, поэтому полиморфизм должен срабатывать. Или что-то мне не хватает?
Вы имели в виду 'pnlImagePanel.add (imPanel)'. Но да, это сработало. Благодарю. – Fuv
Yw, только что скорректировал, что b4 вы упомянули :)) – Reimeus