欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

情人节,超赞程序员这样表达自己的爱意~

程序员文章站 2024-03-16 17:31:58
...

代码不足100行,但这是我们程序猿的浪漫。

import javazoom.jl.player.Player;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.net.URL;

/*
            敲得越多,钱越多!!!
            敲得越多,钱越多!!!
            敲得越多,钱越多!!!
*/
public class RuRu {
    public static void main(String[] args) {
//     播放音乐
        playMusic("C:\\Users\\Lenovo\\Desktop\\小F4 - 情非得已.mp3");
        JFrame jfm = new JFrame();
        // 创建窗体大小
        jfm.setSize(1250, 753);
        // 创建面板并添加到面板上
        MyPanel panel = new MyPanel();
        jfm.add(panel);
        jfm.setLocationRelativeTo(null);
        // 设置关闭窗体时关闭程序
        jfm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // 设置窗体可见
        jfm.setVisible(true);
    }

    public static void playMusic(String path) {//播放背景音乐
        //因为轮换播放会造成阻塞,所以需要开启线程
        new Thread(new Runnable() {
            @Override
            public void run() {
                File file = new File(path);
                try {
                    //播放时候采用输入流来读取相册
                    FileInputStream fis = new FileInputStream(file);
                    BufferedInputStream stream = new BufferedInputStream(fis);
                    Player player = new Player(stream);
                    player.play();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
}

    class MyPanel extends JPanel {
        JLabel pictureLabel = null;
        public MyPanel() {
            super.setLayout(null);//清除默认样式(防止定义按钮不准)
            //因为先添加的层级在最前面
            //                                                          封面图
            Image logo = new ImageIcon(this.getClass().getResource("logo.png")).getImage()
                    .getScaledInstance(360, 360, Image.SCALE_DEFAULT);
            pictureLabel = new JLabel(new ImageIcon(logo));
            pictureLabel.setBounds(430, 84, 364, 364);// 设置位置
            this.add(pictureLabel);
            //相框
//            Image border = new ImageIcon(this.getClass().getResource("border.jpg")).getImage()
//                    .getScaledInstance(800, 600, Image.SCALE_DEFAULT);
//            JLabel imgLabel = new JLabel(new ImageIcon(border));
//            //          此处设置坐标位置
//            imgLabel.setBounds(300, 60, 641, 464);// 设置位置
//            this.add(imgLabel);
            playPictures();//播放照片
        }

        @Override
        public void paintComponent(Graphics g) {
            try {//初始化背景
                BufferedImage bg = ImageIO.read(this.getClass().getResource("bg.jpg"));
                Graphics2D g2 = (Graphics2D) g;
                //和窗体一样的大小,这样就可以平铺进去
                g2.drawImage(bg.getScaledInstance(1250, 753, Image.SCALE_DEFAULT), 0, 0,
                        1250, 753, null);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        void playPictures() {//播放相片
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        //此处睡五秒钟,意为让封面图停留五秒钟
                        Thread.sleep(5000);
                        pictureLabel.setBounds(320, 82, 614, 366);// 设置位置
                        //读取imgs文件夹
                        URL url = MyPanel.class.getResource("imgs");
                        File dir = new File(url.getFile());
                        File[] pics = dir.listFiles();
                        //遍历照片数组获取imgs对象
                        for (File pic : pics) {
                            Image image = new ImageIcon(pic.getAbsolutePath())
                                    .getImage().getScaledInstance(612, 500,
                                            Image.SCALE_DEFAULT);
                            //之后把图片代替封面或者上一张图片
                            pictureLabel.setIcon(new ImageIcon(image));
                            Thread.sleep(5000);
                        }
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }).start();
        }
    }

情人节,超赞程序员这样表达自己的爱意~

 

本人制作的视频涉及自己照片就不放出了。具体操作及效果可参照本人八阿哥老师视频哟https://v.youku.com/v_show/id_XNDU0NDY1NDUxMg==.html

 

 

个性签名:一个人在年轻的时候浪费自己的才华与天赋是一件非常可惜的事情

     如果觉得这篇文章对你有小小的帮助的话,记得在右下角“点赞”~“评论”  “收藏”哦,博主在此感谢!

 

万水千山总是情,打赏5毛买辣条行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!

相关标签: java