一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - JFileChooser實現對選定文件夾內圖片自動播放和暫停播放實例代碼

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

2020-09-21 15:30xiaoqiang1001 Java教程

這篇文章主要介紹了JFileChooser實現對選定文件夾內圖片自動播放和暫停播放實例代碼,需要的朋友可以參考下

本案例通過使用JFileChooser實現對選定文件夾內圖片實現自動播放和暫停播放

代碼如下,如有不合適的地方 還請指教

java" id="highlighter_589258">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
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實現對選定文件夾內圖片自動播放和暫停播放實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://blog.csdn.net/crpxnmmafq/article/details/70876399

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产福利不卡一区二区三区 | 免费看视频 | 免费国产影视观看网站入口 | 男人的j伸到女人的屁股眼 男人吃奶动态图 | 亚洲va久久久久综合 | 欧美另类变态 | 国产精品亚洲精品日韩已满 | 色婷婷综合久久久 | 青草国产福利视频免费观看 | 日本韩国推理片免费观看网站 | 国产免费一区二区 | 好 舒服 好 粗 好硬免费视频 | 贵妇的私人性俱乐部 | 国产福利在线观看91精品 | 日本中文字幕不卡在线一区二区 | 国产毛片在线高清视频 | 国产欧美视频一区二区三区 | 国产片自拍| 五月色天在线视频综合观看 | 日本伊人色 | 亚洲视频在线免费 | 日本性生活免费看 | 国产美女下面流出白浆视频 | 羞羞影院午夜男女爽爽影院网站 | 三星w699| 亚洲欧美日韩精品久久亚洲区 | 高清国产精品久久 | 福利片福利一区二区三区 | 亚洲 欧美 国产 在线 日韩 | 2020韩国r级理论片在线观看 | 欧美激烈精交gif动态图18p | 久久成人精品免费播放 | 国产99在线 | 国产美女下面流出白浆视频 | 日韩久久中文字幕 | 波多野给衣一区二区三区 | 5555kkkk香蕉在线观看 | 久久99热狠狠色AV蜜臀 | 精品久久久久免费极品大片 | 免费看男女做好爽好硬视频 | 亚洲欧洲淘宝天堂日本 |