首页 > 开发 > Java > 正文

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

2024-07-13 10:07:17
字体:
来源:转载
供稿:网友

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

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

java;">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;/** * 本例通过JFileChooser选择文件夹  * 对文件夹内图片进行滚动播放 用到TimerTask以及ActionListener * 详细解释JFileChooser使用及图片滚动过程需要的思维 * @author xiaoqiang * @timer 2017年4月27日   */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();  }  /**   * 获取单例类    * 用于TimerTask执行时调用同一对象   * @return Object   */  public static Object getInstance(){    if(playPicture==null)      playPicture=new PlayPicture();    return playPicture;  }  /**   * 画图方法 将GUI画出来   * 因为练习图片滚动和JFileChooser   * 所以GUI比较难看   */  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);  }  /**   * 执行自动播放效果    * 注意使用的单例类   * 暂停的话设置单例类静态变量   * play为false   */  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:"));      /*       * 设置可以选择文件夹,默认为只允许选择文件       *        * DIRECTORIES_ONLY 指示仅显示目录。       * FILES_AND_DIRECTORIES 指示显示文件和目录       * FILES_ONLY 指示仅显示文件。(默认)       *        */      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实现对选定文件夹内图片自动播放和暂停播放实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对VeVb武林网网站的支持!


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表