栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JFileChooser实现对选定文件夹内图片自动播放和暂停播放实例代码

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JFileChooser实现对选定文件夹内图片自动播放和暂停播放实例代码

本案例通过使用JFileChooser实现对选定文件夹内图片实现自动播放和暂停播放

代码如下,如有不合适的地方 还请指教

package com.xiaoqiang;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.Jframe;
import javax.swing.JLabel;
import java.util.Timer;
import java.util.TimerTask;

public class PlayPicture extends Jframe implements ActionListener{
  private File fileDirectory;
  private JFileChooser fileChooser;
  private Container con;
  private JButton nextPic;
  private JButton previousPic;
  private JButton showPic;
  private JButton beginPlayPic;
  private JButton stopPlayPic;
  private JLabel picIcon;
  private String[] fileName;
  private String parentPath;
  private static boolean play;
  private static PlayPicture playPicture;
  private int i=-1;
  private PlayPicture(){
    super("图片自动播放器");
    this.draw();
  }
  
  public static Object getInstance(){
    if(playPicture==null)
      playPicture=new PlayPicture();
    return playPicture;
  }
  
  public void draw(){
    con=this.getContentPane();
    con.setLayout(new FlowLayout());
    showPic=new JButton("请选择目录");
    con.add(showPic);
    showPic.addActionListener(this);
    picIcon=new JLabel("请选择目录展示图片");
    con.add(picIcon);
    previousPic=new JButton("上一张");
    con.add(previousPic);
    previousPic.addActionListener(this);
    nextPic=new JButton("下一张");
    con.add(nextPic);
    nextPic.addActionListener(this);
    beginPlayPic=new JButton("开始自动播放");
    stopPlayPic=new JButton("停止自动播放");
    con.add(beginPlayPic);
    con.add(stopPlayPic);
    beginPlayPic.addActionListener(this);
    stopPlayPic.addActionListener(this);
    this.setLocation(550, 200);
    this.setSize(900,700);
    this.setVisible(true);
  }
  
  public void automatic(){
    TimerTask task = new TimerTask() { 
      @Override 
      public void run() {
 ((PlayPicture) PlayPicture.getInstance()).NextPicture();
 if(!((PlayPicture)PlayPicture.getInstance()).play){
   ((PlayPicture) PlayPicture.getInstance()).previousPicture();
 }
      } 
    }; 
    Timer timer = new Timer(); 
    long delay = 0; 
    //intevalPeriod为秒数
    long intevalPeriod = 5 * 1000; 
    timer.scheduleAtFixedRate(task, delay, intevalPeriod);
  }
  @Override
  public void actionPerformed(ActionEvent e) {
    if(e.getSource().equals(showPic)){
      //设置G盘为默认打开路径
      fileChooser=new JFileChooser(new File("G:"));
      
      fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
      //把JFileChooser释放
      fileChooser.showOpenDialog(this);
      fileDirectory=fileChooser.getSelectedFile();
      i=-1;//每次打开都将i重置 方便播放文件
      parentPath=fileDirectory.getAbsolutePath();
      fileName=fileDirectory.list();
      if(hasPicture()){
 this.NextPicture();
 setBottonEnabled(true);
      }else{
 picIcon.setText("该目录没有图片哦");
 picIcon.setIcon(null);
 setBottonEnabled(false);
      }
    }else if(e.getSource().equals(nextPic)){
      this.NextPicture();
    }else if(e.getSource().equals(previousPic)){
      this.previousPicture();
    }else if(e.getSource().equals(beginPlayPic)){
      this.automatic();
      play=true;
    }else if(e.getSource().equals(stopPlayPic)){
      play=false;
    }
  }
  //设置按钮不可用
  private void setBottonEnabled(boolean available){
    nextPic.setEnabled(available);
    previousPic.setEnabled(available);
    beginPlayPic.setEnabled(available);
    stopPlayPic.setEnabled(available);
  }
  //判断所选路径是否有图片
  private boolean hasPicture(){
    for(String s:fileName){
      if(s.matches("(?i).*(.jpg|.png|.gif|.bpm|.jpeg)$"))
 return true;
    }
    return false;
  }
  private void previousPicture(){
    if(i==0){
      i=fileName.length-1;
    }
    while(!fileName[--i].matches("(?i).*(.jpg|.png|.gif|.bpm|.jpeg)$")){
      if(i==-1){
 i=fileName.length;
      }
    }
    System.out.println(i);
    picIcon.setIcon(new ImageIcon(parentPath+"\"+fileName[i]));
    picIcon.setText("");
  }
  private void NextPicture() {
    if(i==fileName.length-1){
      i=0;
    }
    while(!fileName[++i].matches("(?i).*(.jpg|.png|.gif|.bpm|.jpeg)$")){
      if(i==fileName.length-1){
 i=-1;
      }
    }
    System.out.println(i);
    picIcon.setIcon(new ImageIcon(parentPath+"\"+fileName[i]));
    picIcon.setText("");
  }
  public static void main(String[] args) {
    //获取实例调用构造方法
    PlayPicture.getInstance();
  }
}

以上所述是小编给大家介绍的JFileChooser实现对选定文件夹内图片自动播放和暂停播放实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对考高分网网站的支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/146466.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号