本案例通過使用JFileChooser實現對選定文件夾內圖片實現自動播放和暫停播放
代碼如下,如有不合適的地方 還請指教
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