我正在使用Imagebox JFrame添加图片,我想在运行时更改图片,所以我添加了以下代码,但没有显示任何内容。
javax.swing.JFileChooser filechooser = new javax.swing.JFileChooser();
filechooser.showDialog(this,"ok");
File f = filechooser.getSelectedFile();
txt_Image.setText(f.getName());
FileName = f.getPath()+f.getName();
Image im= Toolkit.getDefaultToolkit().createImage(FileName);
ImageIcon receivedIcon =null;
receivedIcon.setImage(im);
imagebox1.setimageFile(receivedIcon);
图片框代码在
下面public class imagebox extends JPanel {
public void setimageFile(Icon icon) {
imageFile=icon;
}
@Override
public void paint(Graphics g) {
super.paint(g);
if (imageFile != null) {
Image imageF= ((ImageIcon)imageFile).getImage();
g.drawImage(imageF, 0, 0, getWidth(), getHeight(), this);
} else {
g.drawLine(0, 0, getWidth(), getHeight());
g.drawLine(0, getHeight(), getWidth(), 0);
}
}
private Icon imageFile = null;
所以为什么没有错误显示,但我无法在我的图像框中获得任何图像
答案 0 :(得分:2)
如果您只显示Images
,那么最好直接使用Icon/ImageIcon,(以避免Casting
或其他)将此图标放到JLabel而不是到JPanel
如果您想在运行时更改Icon
,那么您的代码将是
myLabel.setIcon(myIcon);
revalidate();
repaint();
此代码必须在EDT上完成,否则你必须将a.m.代码行包装到invokeLater()
答案 1 :(得分:2)
ImageIcon receivedIcon = null;
receivedIcon.setImage(im);
更改为
ImageIcon receivedIcon = new ImageIcon();
receivedIcon.setImage(im);