十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
// 不加包,图片跟类文件在一个目录,命令行下编译执行就行了
创新互联-专业网站定制、快速模板网站建设、高性价比武汉网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式武汉网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖武汉地区。费用合理售后完善,十年实体公司更值得信赖。
// 如果建工程,图片放到工程根目录
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Student extends JFrame {
public Student() {
init();
}
private void init() {
final Container c = getContentPane();
final JLabel imgLabel = new JLabel();
JButton btnPic = new JButton("换背景图片");
btnPic.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ImageIcon img = new ImageIcon(System.getProperty("user.dir") + "\\a.png");
imgLabel.setIcon(img);
imgLabel.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());
}
});
((JPanel)getContentPane()).setOpaque(false);
getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE));
setLayout(new FlowLayout());
add(btnPic);
setSize(500, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new Student().setVisible(true);
}
一个图片时你知道,现在只是切换的问题?
给按钮添加一个 ActionListener,在它的 actionPerformed 方法中做你的事情,把 jpanel.setIcon(..) 换张图片。
你的jl1没放到jp1中,放到了JFrame中,所以jp1.remove(jl1);应该改成this.remove(jl1);
另外,改完后,要重新布置一下JFrame中的组件,用this.validate();
你的程序我帮你改完了,你看看吧。(改动的地方见注释)
import java.awt.*;
import javax.swing.*;
public class Hello_2 extends JFrame{
JLabel jl1;
JLabel jl2;
JPanel jp1;
public static void main(String[] args) {
Hello_2 hello=new Hello_2();
}
public Hello_2()
{
jp1=new JPanel();
jl1=new JLabel(new ImageIcon("images/001.png"));
this.add(jl1);
this.setSize(420, 430);
this.setLocationRelativeTo(null);
// 窗口居中显示
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//关闭程序
this.setVisible(true);
this.remove(jl1);//这里jp1.remove(jl1);改成this.remove(jl1);
jl2=new JLabel(new ImageIcon("images/002.png"));
this.add(jl2);
this.validate();//这里让JFrame容器再次布置其子组件
//repaint();
//我想让界面显示过001.png后再显示002.png ,可是为什么只显示001.png?
}
}
如果是普通切换的话,直接定义一个int值,根据int值的不同 来画不同的东西就可以了\x0d\x0aint index;\x0d\x0aswitch(index){\x0d\x0a case 0:\x0d\x0a g.drawImage(a,0,0,20); \x0d\x0a break;\x0d\x0a case 1:\x0d\x0a g,drawImage(b,0,0,20);\x0d\x0a break;\x0d\x0a .................................\x0d\x0a}\x0d\x0a \x0d\x0a如果用渐变效果的话,创建一个数组记录下一张要话的图片的所有RGB值,初始设置所有像素点的透明度为100%,即完全透明,然后一点点的把透明度降低,直到为0,这样就把第二章图片用渐变的方法绘制出来了,这时就可以不用画第一张图片了。