当前位置: 代码迷 >> J2SE >> 不能用新的图片覆盖掉旧的图片解决办法
  详细解决方案

不能用新的图片覆盖掉旧的图片解决办法

热度:85   发布时间:2016-04-23 19:51:13.0
不能用新的图片覆盖掉旧的图片
我用如下代码添加了一张图片,
		imageofperson=new ImageIcon(imageurlofperson);
image = imageofperson.getImage();
smallimage = image.getScaledInstance(300,300,Image.SCALE_FAST);
smallicon = new ImageIcon(smallimage);
imageofpersonlabel=new JLabel(smallicon);
this.getLayeredPane().add(imageofpersonlabel,
    new Integer(Integer.MIN_VALUE)); // 设置JLabel在最底层
imageofpersonlabel.setBounds(0, 0, 300,300);

又设置了一个选择图片的按钮,按钮的事件监听器中还是上面的代码,只不过imageurlofperson变量已经换成所选择的图片所在的地址了,我本来想用新的选择的图片替换旧的那张图片,可是显示的一直是旧的图片,请问怎么办呢?请指教。多谢。
------解决思路----------------------
写了个例子,希望能帮到你。
import javax.swing.*;
import javax.swing.filechooser.*;
import java.awt.*;
import java.awt.event.*;
import java.io.File;

public class CsdnTest extends JFrame {

private static final long serialVersionUID = -4540916546211725054L;
private JLabel background = new JLabel();
private JTextField tf_path = new JTextField();
private JPanel pl_main = new JPanel();
private JButton btn_choose = new JButton();

public CsdnTest() {
initComponents();
}

private void initComponents() {
Container c = getContentPane();

btn_choose.setBounds(100, 100, 120, 20);
btn_choose.setText("选择图片");
btn_choose.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
btnActionPerformed(evt);
}
});

tf_path.setBounds(100, 50, 200, 30);

pl_main.setOpaque(false);

c.add(tf_path);
c.add(btn_choose);
c.add(pl_main);
c.add(background);
setSize(540, 450);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public void btnActionPerformed(ActionEvent evt) {
//用JFileChooser选择背景图片。
JFileChooser jfc = new JFileChooser();
jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
FileSystemView fsv = FileSystemView.getFileSystemView();
FileFilter ff = new FileNameExtensionFilter("图像文件(JPG/GIF)", "JPG",
"JPEG", "GIF");
jfc.setCurrentDirectory(fsv.getHomeDirectory());
jfc.setFileFilter(ff);
int state = jfc.showOpenDialog(null);

//用JLabel的setIcon()方法设置背景图片。
if (state == JFileChooser.APPROVE_OPTION) {
File selectedFile = jfc.getSelectedFile();
tf_path.setText(selectedFile.getAbsolutePath());
ImageIcon img = new ImageIcon(selectedFile.getAbsolutePath());

img.setImage(img.getImage().getScaledInstance(540, 450,
Image.SCALE_DEFAULT));
background.setIcon(img);
}
}

public static void main(String[] args) {
new CsdnTest();
}
}

------解决思路----------------------
图片加载的URL请求地址后加一个时间戳即可。
  相关解决方案