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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩欧美天堂 | 国产成人99精品免费观看 | 免费一级夫妻a | 99热精品在线免费观看 | 国产精品一区二区久久不卡 | 9丨精品国产高清自在线看 9久热这里只有精品免费 | 欧美一区a | 免费一看一级欧美 | 欧美在线观看视频一区 | 亚洲国产日韩欧美在线vip1区 | 久久99亚洲AV无码四区碰碰 | 无人区尖叫之夜美女姐姐视频 | 国产人成精品午夜在线观看 | 九九在线精品亚洲国产 | 婷婷综合缴情亚洲五月伊 | 垫底辣妹免费观看完整版 | 亚洲成人一区二区 | 亚洲四虎在线 | 亚洲成年网站在线777 | 亚洲一区二区精品视频 | 国产高清专区 | 男女视频在线观看 | 国产rpg迷雾之风冷狐破解 | 国产在线播放一区 | 精品日韩欧美一区二区三区在线播放 | 国产91精品在线播放 | 欧美成人福利视频 | 草榴色导航| 日本不卡不码高清免费观看 | 国产精品免费精品自在线观看 | 2022av小四郎的最新地址 | 女班长的放荡日记高h | 女教师波多野结衣高清在线 | 免费视频 | 男女做污事 | 国产 国语对白 露脸正在播放 | 国产精品中文字幕 | 日本肥熟| 亚洲国产成人精品激情 | 亚洲xxxxxhd奶水女人 | 国产免费午夜高清 |