程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> JFileChooser實現對選定文件夾內圖片自動播放和暫停播放實例代碼

JFileChooser實現對選定文件夾內圖片自動播放和暫停播放實例代碼

編輯:關於JAVA

JFileChooser實現對選定文件夾內圖片自動播放和暫停播放實例代碼。本站提示廣大學習愛好者:(JFileChooser實現對選定文件夾內圖片自動播放和暫停播放實例代碼)文章只能為提供參考,不一定能成為您想要的結果。以下是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;
/**
 * 本例通過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實現對選定文件夾內圖片自動播放和暫停播放實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對網站的支持!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved