我在这里使用以前的主题之一编写了自己的 ImagePanel:
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 方法,所以应该触发多态性。还是我缺少什么?