JFileChooser实现对选定文件夹内图片自动播放和暂停播放实例代码
本案例通过使用JFileChooser实现对选定文件夹内图片实现自动播放和暂停播放
代码如下,如有不合适的地方还请指教
packagecom.xiaoqiang; importjava.awt.Container; importjava.awt.FlowLayout; importjava.awt.event.ActionEvent; importjava.awt.event.ActionListener; importjava.io.File; importjavax.swing.ImageIcon; importjavax.swing.JButton; importjavax.swing.JFileChooser; importjavax.swing.JFrame; importjavax.swing.JLabel; importjava.util.Timer; importjava.util.TimerTask; /** *本例通过JFileChooser选择文件夹 *对文件夹内图片进行滚动播放用到TimerTask以及ActionListener *详细解释JFileChooser使用及图片滚动过程需要的思维 *@authorxiaoqiang *@timer2017年4月27日 */ publicclassPlayPictureextendsJFrameimplementsActionListener{ privateFilefileDirectory; privateJFileChooserfileChooser; privateContainercon; privateJButtonnextPic; privateJButtonpreviousPic; privateJButtonshowPic; privateJButtonbeginPlayPic; privateJButtonstopPlayPic; privateJLabelpicIcon; privateString[]fileName; privateStringparentPath; privatestaticbooleanplay; privatestaticPlayPictureplayPicture; privateinti=-1; privatePlayPicture(){ super("图片自动播放器"); this.draw(); } /** *获取单例类 *用于TimerTask执行时调用同一对象 *@returnObject */ publicstaticObjectgetInstance(){ if(playPicture==null) playPicture=newPlayPicture(); returnplayPicture; } /** *画图方法将GUI画出来 *因为练习图片滚动和JFileChooser *所以GUI比较难看 */ publicvoiddraw(){ con=this.getContentPane(); con.setLayout(newFlowLayout()); showPic=newJButton("请选择目录"); con.add(showPic); showPic.addActionListener(this); picIcon=newJLabel("请选择目录展示图片"); con.add(picIcon); previousPic=newJButton("上一张"); con.add(previousPic); previousPic.addActionListener(this); nextPic=newJButton("下一张"); con.add(nextPic); nextPic.addActionListener(this); beginPlayPic=newJButton("开始自动播放"); stopPlayPic=newJButton("停止自动播放"); 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 */ publicvoidautomatic(){ TimerTasktask=newTimerTask(){ @Override publicvoidrun(){ ((PlayPicture)PlayPicture.getInstance()).NextPicture(); if(!((PlayPicture)PlayPicture.getInstance()).play){ ((PlayPicture)PlayPicture.getInstance()).previousPicture(); } } }; Timertimer=newTimer(); longdelay=0; //intevalPeriod为秒数 longintevalPeriod=5*1000; timer.scheduleAtFixedRate(task,delay,intevalPeriod); } @Override publicvoidactionPerformed(ActionEvente){ if(e.getSource().equals(showPic)){ //设置G盘为默认打开路径 fileChooser=newJFileChooser(newFile("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); } }elseif(e.getSource().equals(nextPic)){ this.NextPicture(); }elseif(e.getSource().equals(previousPic)){ this.previousPicture(); }elseif(e.getSource().equals(beginPlayPic)){ this.automatic(); play=true; }elseif(e.getSource().equals(stopPlayPic)){ play=false; } } //设置按钮不可用 privatevoidsetBottonEnabled(booleanavailable){ nextPic.setEnabled(available); previousPic.setEnabled(available); beginPlayPic.setEnabled(available); stopPlayPic.setEnabled(available); } //判断所选路径是否有图片 privatebooleanhasPicture(){ for(Strings:fileName){ if(s.matches("(?i).*(.jpg|.png|.gif|.bpm|.jpeg)$")) returntrue; } returnfalse; } privatevoidpreviousPicture(){ 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(newImageIcon(parentPath+"\\"+fileName[i])); picIcon.setText(""); } privatevoidNextPicture(){ 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(newImageIcon(parentPath+"\\"+fileName[i])); picIcon.setText(""); } publicstaticvoidmain(String[]args){ //获取实例调用构造方法 PlayPicture.getInstance(); } }
以上所述是小编给大家介绍的JFileChooser实现对选定文件夹内图片自动播放和暂停播放实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!