中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-10-17 15:02:28 來源:腳本之家 閱讀:168 作者:xiaoqiang1001 欄目:編程語言

本案例通過使用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實現對選定文件夾內圖片自動播放和暫停播放實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

谢通门县| 广丰县| 青海省| 瑞丽市| 嘉黎县| 谢通门县| 阿拉尔市| 确山县| 泰宁县| 鹿泉市| 嘉黎县| 浮梁县| 金塔县| 洛宁县| 华亭县| 冀州市| 清远市| 龙海市| 平顺县| 合江县| 都安| 韶山市| 县级市| 普兰县| 金溪县| 临朐县| 花莲县| 沁水县| 河北区| 陇西县| 澄江县| 丹巴县| 济宁市| 洪湖市| 衡阳市| 枣阳市| 常山县| 宁武县| 荔浦县| 滕州市| 会宁县|