> 文档中心 > java相册制作,文章中含有源码

java相册制作,文章中含有源码

package cn.demo2;import javax.imageio.ImageIO;import javax.swing.*;import java.awt.*;import java.awt.image.BufferedImage;import java.io.IOException;/** * 电子相册 */public class MyImage extends JPanel{    //定义一个成员变量    BufferedImage bgImage;    public static void main(String[] args) { //创建一个窗口 JFrame frame=new JFrame(); //设置一个窗口 frame.setSize(450,750); //设置标题 frame.setTitle("JAVA电子版相册"); //让窗口居中显示// frame.setLocation(300,40); frame.setLocationRelativeTo(null); //关闭窗口时关闭JVM,否则只是单方面关闭窗口,程序还在运行 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //创建面板对象 MyImage myImage=new MyImage(); //把面板放到窗口上 frame.add(myImage); //调用初始化对象存放到窗口 myImage.initImags(); //把图片画到窗口上去,调用绘图方法 //重绘// myImage.repaint(); // TODO 写方法让 ff  一直变   ,   开启新的线程,用来该值 myImage.become(); //显示出这一个窗口 frame.setVisible(true);    }    float ff=0f;    int num=0;  //数组下标索引值    //TODO 写方法让 ff 变量一直变    public void become(){ //启动一个线程 new Thread(new Runnable() {     @Override     public void run() {  //一直去改变ff的值  while (true){      //从数组中获取照片      bgImage=images[num];      num+=1;      //考虑数组越界      if(num==4){   num=0;      }      while (true){   if(ff<100f){ff+=2f;repaint();   }   else{ff=0f;break;   }   //加一个休眠,否则太快了啥也没有,还是白板   try {Thread.sleep(50);   } catch (InterruptedException e) {e.printStackTrace();   }      }  }     } }).start();    }    //需要重写父类的方法    提供一个绘图方法    @Override    public void paint(Graphics g) { super.paint(g); /**  * 做图片效果,淡入  */ //转换成子类对象,提供了更多的方法 Graphics2D graphics2D= (Graphics2D) g;   //强转 //画什么东西 if(bgImage!=null){     //加入淡入效果     graphics2D.setComposite(AlphaComposite.SrcOver.derive(ff/100f));     //把这张图片画到窗口上去    G     g.drawImage(bgImage,0,0,bgImage.getWidth(),bgImage.getHeight(),null); }    }    //TODO.1.   **存照片**   定义图片类型数组   BufferedImage表示图片对象    BufferedImage [] images=new BufferedImage[4];    /**     * 加载准备好的一些图片     */    public void initImags(){ try { //编写一个for循环 for (int i = 1; i <= 4; i++) {     //每循环一次都要去加载一张图片  BufferedImage image = ImageIO.read(MyImage.class.getResource("/cn/demo2/image/" + i + ".jpg"));  //没读取到一张图片对象,把他存放到我们的数组中  images[i-1]=image; }     //给成员变量赋值   TODO 换照片     bgImage=images[1]; } catch (IOException e) {     e.printStackTrace(); }    }}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
结果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码来源于B站,侵权请联系删除