• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java小程序—录屏小程序(下半场)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

    下半场。

    上半场,我们我们写了录屏的程序,那么下半场我们的任务是写一个播放器。

    设计思路:播放器的思路就是将图片放在一个JScrollPane中顺序播放,所以还是得使用swing组件,并且仍然要使用线程。

package Frame;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;

public class Player extends JFrame {
	File file;
	JLabel label;
	JButton play;
	BufferedImage bufferedImage;
	JScrollPane jsp;

	JProgressBar loading;// 进度条

	public Player() {
		setTitle("播放器V1.0");
		setSize(400, 500);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setLayout(new BorderLayout());

		loading = new JProgressBar();
		label = new JLabel();
		// label.setBackground(Color.BLUE);
		jsp = new JScrollPane(label);
		play = new JButton("播放");
		add(jsp, BorderLayout.CENTER);
		JPanel jp = new JPanel();
		jp.setLayout(new FlowLayout());
		jp.add(play);
		jp.add(loading);
		add(jp, BorderLayout.SOUTH);

		play.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				JFileChooser chooser = new JFileChooser();
				chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
				int cnt = chooser.showOpenDialog(null);
				if (cnt == 0) {
					file = chooser.getSelectedFile();
					new Play().start();
				}
			}
		});
		setVisible(true);
	}

	public class Play extends Thread {
		public void run() {
			// 获得文件夹下所有的文件
			File[] files = file.listFiles();
			loading.setValue(0);
			loading.setMaximum(files.length);
			int index=0;
			for (File f : files) {
				try {
					// 从文件中读取图片到内存中
					bufferedImage = ImageIO.read(f);
					Image image = bufferedImage.getScaledInstance(jsp.getWidth(), jsp.getHeight(),Image.SCALE_SMOOTH);// 最后一个参数为平滑渲染
					ImageIcon icon = new ImageIcon(image);
					label.setIcon(icon);
					index++;
					loading.setValue(index);
					Thread.sleep(250);
				} catch (IOException e) {
					e.printStackTrace();
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}
	}

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

     上述代码中我们用swing组件做了一个播放器的界面,在播放按钮中添加监听事件,并且在点击的时候弹出一个文件选择器,然后在下面的线程方法中获取用户选择的文件夹路径,然后将获取的文件夹路径的图片读到缓存中,然后用图片缓存技术平滑的展示图片。同时我们在界面中写了一个进度条,进度条的动画是根据图片的剩余张数来显示。

     测试:

      1.运行Recoder.java 点击开始,选择一个文件夹

        

        2.点击保存,10s后点击停止,查看所选文件夹中的文件

        

        3.运行Player.java  点击播放,选择要播放的文件夹路径

        

        4.查看播放效果

          

        总结:

          虽然我们成功的实现了录屏的效果,但是还有很多不足的地方:

              1.播放的画质特别渣

              2.播放器中少了暂停和继续播放的功能

              3.播放器的进度条单一,没有数字提示播放进程

              4.播放的过程中存在卡顿的效果

              5. ......

        


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap