关于java添加背景图片的问题-Java

自己写了一个更换背景的程序,代码如下:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class BackgroundTest extends JFrame implements ActionListener{
JMenuBar bar;
JMenu menus;
JMenuItem[]items;
String []picName={“琴声悠扬”,”绿色草地”,”卢浮宫殿”};
String []picName2={“picture2.jpg”,”picture9.jpg”,”picture8.jpg”};
JComponent p3;
JLabel img;
Image bg,bg2;
public BackgroundTest(){
bar=new JMenuBar();
menus=new JMenu(“更换背景”);
items=new JMenuItem[3];
bar.add(menus);
for(int i=0;i<3;i++){
items[i]=new JMenuItem(picName[i]);
menus.add(items[i]);
items[i].addActionListener(this);
}
this.setJMenuBar(bar);
//this.changePhoto(“picture2.jpg”);
p3=(JComponent)getLayeredPane();
p3.setLayout(null);
((JComponent) getContentPane()).setOpaque(false);;
this.setUndecorated(false);
this.setResizable(false);
JTextArea input=new JTextArea();
input.setOpaque(false);
input.setFont(new Font(“茶语GBK”,Font.PLAIN,20));
input.setForeground(Color.GREEN);
add(input);
setTitle(“BackgroundTest”);
setSize(600,480);
setVisible(true);
}
public static void main(String[] args) {
new BackgroundTest();
}
public void changePhoto(String picName){

 bg=Toolkit.getDefaultToolkit().getImage("demo\\"+picName); bg2=bg.getScaledInstance(600,480, Image.SCALE_DEFAULT); img=new JLabel(new ImageIcon(bg2)); img.setBounds(0,0,600,480); p3.add(img,new Integer(-30001));; img.repaint(); } public void actionPerformed(ActionEvent e){ if(e.getSource()==items[0]) this.changePhoto(picName2[0]); else if(e.getSource()==items[1]) this.changePhoto(picName2[1]); else this.changePhoto(picName2[2]); } 

}
运行程序第一次选择选项可以更换,第二次就不能更换了,为什么会这样,在changePhoto()最后一行调用img.repaint()也没有用,求大神指点,怎样才能实现这样连续换背景

本网页由快兔兔AI采集器生成,目的为演示采集效果,若侵权请及时联系删除。

原文链接:https://ask.csdn.net/questions/232946

更多内容