JFileChooser实现对选定文件夹内图片自动播放和暂停播放实例代码

2025-05-29 0 55

本案例通过使用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实现对选定文件夹内图片自动播放和暂停播放实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对快网idc网站的支持!

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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 JFileChooser实现对选定文件夹内图片自动播放和暂停播放实例代码 https://www.kuaiidc.com/117160.html

相关文章

猜你喜欢
发表评论
暂无评论