
正文
java图片定时播放代码 java图片定时播放代码怎么用
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
请给我的JAVA程序添加一个自动播放图片功能
//其余的类在qq上给你..
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Field;
import java.util.Properties;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.LookAndFeel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.filechooser.FileNameExtensionFilter;
public class ImageFrame extends JFrame implements ActionListener, MouseListener {
/**
*
*/
private static final long serialVersionUID = -5241799989073556019L;
static Properties property = new Properties();
static {
Class iClass;
try {
iClass = Class.forName("sun.awt.im.InputMethodContext");
Field field = iClass.getDeclaredField("belowTheSpotInputRequested");
AccessibleObject.setAccessible(new AccessibleObject[] { field },
true);
field.setBoolean(null, false);
} catch (Exception e) {
}
}
public JPanel imagePanel;
public JPanel buttonPanel;
public JPanel statePanel;
public JLabel imageLabel;
public JLabel stateLabel;
public JButton before;
public JButton play;
public JButton stop;
public JButton next;
public JButton bigger;
public JButton smaller;
static JTextArea area = new JTextArea(5, 60);
JScrollPane scroll = new JScrollPane(area);
public File picFile;
public Image img;
public ImageIcon imageIcon;
public String fileParent;
FileNameExtensionFilter imageFilter = new FileNameExtensionFilter(null,
"jpeg", "jpg", "png", "gif");
JFileChooser imageChooser = new JFileChooser();
public File filePath[];
public File imagePath[];
public static Picture images[];
public int imageFileNumber = 0;
public static int locationImage = 0;
public static ImageFrame myImageFrame;
private PlayTimer playTimer;
public Image[] imageOffer;
public int scale = 8;
public JScrollPane imageScrollPane;
public ImageFrame(String picPath) {
picFile = new File(picPath);
fileParent = picFile.getParent();
filePath = (new File(fileParent)).listFiles();
try {
img = javax.imageio.ImageIO.read(picFile);
} catch (IOException ex) {
ex.printStackTrace();
}
imageIcon = new ImageIcon(img);
imageLabel = new JLabel(imageIcon);
imagePanel = new JPanel(new BorderLayout());
imagePanel.setBackground(Color.black);
//R:238 G:243 B:250
//imagePanel.setBackground(new Color(238,243,250));
stateLabel = new JLabel();
final String windows = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
try {
UIManager.setLookAndFeel(windows);
SwingUtilities.updateComponentTreeUI(this);// 更新控件的外观
} catch (Exception e) {
e.printStackTrace();
}
setLayout(new BorderLayout());
setTitle("PowerSee 图片查看器");
setIconImage(new ImageIcon("icon/powerSee.png").getImage());
setSize(800, 600);
this.setMinimumSize(new Dimension(600, 400));
setVisible(true);
setExtendedState(JFrame.MAXIMIZED_BOTH);
buttonPanel = makeButtonPanel();
area.setLineWrap(true);
// area.setWrapStyleWord(true);
area.addMouseListener(this);
// area.setFont(new Font(area.getFont().getFamily(), Font.PLAIN,
// 18));
LookAndFeel.installColorsAndFont(area, "Label.background",
"Label.foreground", "TextArea.font");
area.setBorder(BorderFactory.createTitledBorder("此处可添加照片描述:"));
area.setLineWrap(true);
area.setWrapStyleWord(true);
area.getDocument().addDocumentListener(new SWING_OnValueChanged());
/*
area.setText("");
area.setText("像素大小: " + imageIcon.getIconWidth() + "*"
+ imageIcon.getIconHeight() + " 文件位置: " + picFile.toString()
+ " 文件大小: " + picFile.length() / 1024 + "KB");
*/
/*
area.getDocument()
.addDocumentListener(new SWING_OnValueChanged());
*/
// area.setBackground(new Color() );
Font font = new Font("宋体", Font.PLAIN, 17);
area.setFont( font);
// area.setEditable(false);
statePanel = new JPanel();
//:36 G:53 B:71R:192 G:192 B:196
statePanel.setBackground(new Color(192,192,196));
stateLabel.setText("像素大小: " + imageIcon.getIconWidth() + "*"
+ imageIcon.getIconHeight() + " 文件位置: " + picFile.toString()
+ " 文件大小: " + picFile.length() / 1024 + "KB");
//stateLabel;
imagePanel.add(imageLabel, BorderLayout.CENTER);
imageScrollPane = new JScrollPane(imagePanel);
add(imageScrollPane, BorderLayout.CENTER);
add(buttonPanel, BorderLayout.NORTH);
//statePanel.add(stateLabel);
//statePanel.setBackground(Color.black);
statePanel.add(area, BorderLayout.CENTER);//scroll
add(statePanel, BorderLayout.SOUTH);
imagePanel.repaint();
imagePanel.validate();
Load();
}
//对于此法可借鉴,返回一个panel竟然......
public JPanel makeButtonPanel() {
JPanel aButtonPanel = new JPanel();
before = new JButton("前一张");
next = new JButton("下一张");
play = new JButton("自动播放");
stop = new JButton("停止");
bigger = new JButton("放大");
smaller = new JButton("缩小");
stop.setEnabled(false);
before.addActionListener(this);
next.addActionListener(this);
play.addActionListener(this);
stop.addActionListener(this);
bigger.addActionListener(this);
smaller.addActionListener(this);
aButtonPanel.add(before);
aButtonPanel.add(play);
aButtonPanel.add(stop);
aButtonPanel.add(next);
aButtonPanel.add(smaller);
aButtonPanel.add(bigger);
return aButtonPanel;
}
/*
* //imageFileNumber 个图像文件
//filePath.length 个文件
//filePath 以某个文件夹的所有文件为元素的数组, 以File类型为元素
//imagePath 以所有图像文件为元素的数组,仍然以File类型为元素
*/
public void Load() {
imageChooser.setFileFilter(imageFilter);
//System.out.println(filePath.length+"----");
//filePath.length,也就是Image这个文件夹里有多少个文件.......所有种类的文件....!!
for (int i = 0; i filePath.length; i++) {
if (!filePath[i].isDirectory() imageFilter.accept(filePath[i])) {
imageFileNumber++;
} else {
filePath[i] = null;
}
}
//imageFileNumber 个图像文件
//filePath.length 个文件
//filePath 以某个文件夹的所有文件为元素的数组, 以File类型为元素
//imagePath 以所有图像文件为元素的数组,仍然以File类型为元素
imagePath = new File[imageFileNumber];
images = new Picture[imageFileNumber];
imageFileNumber = 0;
for (int i = 0; i filePath.length; i++) {
if (filePath[i] != null) {
imagePath[imageFileNumber++] = filePath[i];
}
}
imageFileNumber--;
for (int i = 0; i imagePath.length; i++) {
if (imagePath[i] == picFile) {
locationImage = i;
}
}
for (int i = 0; i imagePath.length; i++) {
initTxt(imagePath[i], i);
}
}
public void initTxt(File picFile, int i) {
try {
property.load(new FileInputStream("a.properties"));
/*
String txt = property.getProperty(picFile.getParent() + "."
+ picFile.getName());
*/
images[i] = new Picture(imagePath[i].getParent() + "."
+ imagePath[i].getName(), "");
} catch (Exception e) {
}
//初始化图片的时候,要从资源文件里读取所有文件的txt信息,可能花费时间较长
}
/*
*
//imageFileNumber 个图像文件
//filePath.length 个文件
//filePath 以某个文件夹的所有文件为元素的数组, 以File类型为元素
//imagePath 以所有图像文件为元素的数组,仍然以File类型为元素
*/
public void Before() {
scale = 8;
if (--locationImage 0) {
locationImage = imageFileNumber;
}
try {
img = javax.imageio.ImageIO.read(imagePath[locationImage]);
} catch (IOException ex) {
ex.printStackTrace();
}
imageIcon.setImage(img);
imageLabel.setIcon(imageIcon);
picFile = imagePath[locationImage];
/*
String text = "像素大小: " + imageIcon.getIconWidth() + "*"
+ imageIcon.getIconHeight() + " 文件位置: " + picFile.toString()
+ " 文件大小: " + picFile.length() / 1024 + "KB";
*/
//System.out.println(picFile.toString());
//Picture p = new Picture(picFile, text);
try {
Properties property = new Properties();
property.load(new FileInputStream("a.properties"));
String areaTxt = "";
areaTxt = property.getProperty(picFile.getParent() + "."
+ picFile.getName());
area.setText("");
area.setText(areaTxt);
} catch (Exception e) {
}
imagePanel.repaint();
imagePanel.validate();
imageScrollPane.repaint();
imageScrollPane.validate();
}
/*
* //imageFileNumber 个图像文件
//filePath.length 个文件
//filePath 以某个文件夹的所有文件为元素的数组, 以File类型为元素
//imagePath 以所有图像文件为元素的数组,仍然以File类型为元素
*/
public void Next() {
scale = 8;
if (++locationImage imageFileNumber) {
locationImage = 0;
}
try {
img = javax.imageio.ImageIO.read(imagePath[locationImage]);
} catch (IOException ex) {
ex.printStackTrace();
}
imageIcon.setImage(img);
imageLabel.setIcon(imageIcon);
picFile = imagePath[locationImage];
try {
Properties property = new Properties();
property.load(new FileInputStream("a.properties"));
String areaTxt = "";
areaTxt = property.getProperty(picFile.getParent() + "."
+ picFile.getName());
area.setText("");
area.setText(areaTxt);
} catch (Exception e) {
}
imagePanel.repaint();
imagePanel.validate();
imageScrollPane.repaint();
imageScrollPane.validate();
}
public void Bigger() {
ImageIcon icon = imageIcon;
if (scale = 17) {
ImageIcon tmpicon = new ImageIcon(new DrawImage(icon.getImage(),
icon.getIconWidth() / 8, icon.getIconHeight() / 8, ++scale)
.getImage());
imageLabel.setIcon(tmpicon);
} else {
return;
}
}
public void Smaller() {
ImageIcon icon = imageIcon;
if (scale 1) {
ImageIcon tmpicon = new ImageIcon(new DrawImage(icon.getImage(),
icon.getIconWidth() / 8, icon.getIconHeight() / 8, --scale)
.getImage());
imageLabel.setIcon(tmpicon);
} else {
return;
}
}
public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(before)) {
Before();
}
if (e.getSource().equals(next)) {
Next();
}
if (e.getSource().equals(play)) {
stop.setEnabled(true);
before.setEnabled(false);
next.setEnabled(false);
bigger.setEnabled(false);
smaller.setEnabled(false);
play.setEnabled(false);
playTimer = new PlayTimer(this);
playTimer.start();
}
if (e.getSource().equals(stop)) {
stop.setEnabled(false);
before.setEnabled(true);
next.setEnabled(true);
bigger.setEnabled(true);
smaller.setEnabled(true);
play.setEnabled(true);
playTimer.cancel();
}
if (e.getSource().equals(bigger)) {
Bigger();
}
if (e.getSource().equals(smaller)) {
Smaller();
}
}
public void mouseClicked(MouseEvent arg0) {
// 鼠标点击
area.setEditable(true);
// pane.add(scroll, BorderLayout.CENTER);
}
public void mouseExited(MouseEvent arg0) {
// 鼠标离开区域
area.setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); //鼠标离开Text区后恢复默认形态
area.setBackground(null);
//保存信息
//area.setEditable(false);
}
public void mousePressed(MouseEvent arg0) {
}
public void mouseReleased(MouseEvent arg0) {
// 鼠标释放
}
public void mouseEntered(MouseEvent arg0) {
// 鼠标释进入区域
area.setCursor(new Cursor(Cursor.TEXT_CURSOR)); //鼠标进入Text区后变为文本输入指针
area.setBackground(new Color(255, 255, 170));
}
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
try {
} catch (Exception ex) {
}
System.exit(0);
}
}
public static void main(String a[]) {
new ImageFrame("Image/p1.jpg");
}
}
class Picture {
String text;
String picFile;
Picture(String string, String text) {
this.picFile = string;
this.text = text;
}
String getText() {
return this.text;
}
String getFilePath() {
return this.picFile;
}
void setText(String text) {
this.text = text;
}
}
class SWING_OnValueChanged implements DocumentListener {
public void changedUpdate(DocumentEvent e) {
textValueChanged(e);
}
public void insertUpdate(DocumentEvent e) {
textValueChanged(e);
}
public void removeUpdate(DocumentEvent e) {
textValueChanged(e);
}
public void textValueChanged(DocumentEvent evt) {
//images
int i = 0;
System.out.println("Swing文本框的内容改变了!" + ImageFrame.locationImage);
i = ImageFrame.locationImage;
//System.out.println("图片!" + ImageFrame.images[i].getFilePath());
try {
ImageFrame.property.setProperty(ImageFrame.images[i].getFilePath(),
ImageFrame.area.getText());
// ImageFrame.images[i].setText(ImageFrame.area.getText());
ImageFrame.property.store(new FileOutputStream("a.properties"),
"a.properties");
} catch (Exception ex) {
}
}
}
相关问答
Q1: java图形界面实现图片自动轮播
现在没空帮你写代码了,给你个思路自己写吧!轮播肯定是要切换图片的,并且一般切换的时候是从左到右或从右到左慢慢切的,所以你定义一个图片地址数组,再定义两个jlabel用来显示图片,一个JLabel显示当前图片,另一个显示最新图片!好了,现在你定义一个timer定时器来切换,每隔两秒,就判断一下最新的图片是哪个jlabel,然后将另一个jlabel填充新的图片,然后setlocation()来移动图片,x坐标每次向左几个像素,直至移动完成!这样就是一次轮播,当然你需要将两个jlabel放到一个panel中,免得会出现第二个图片多出一截在慢慢移动的情况
Q2: java:求一段代码,很简单,运行后直接播放一个小视频,播放完后(或者自行定时)立刻自动关闭。
下载JMF(java media framework)
下面是一个例子
import java.awt.BorderLayout;
import java.awt.Component;
import java.net.MalformedURLException;
import java.net.URL;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
public class MediaPlayer extends javax.swing.JPanel {
public MediaPlayer(URL mediauUrl) {
initComponents();
setLayout(new BorderLayout());
try {
Player mediaPlayer = Manager.createRealizedPlayer(new MediaLocator(mediauUrl));
Component video = mediaPlayer.getVisualComponent();
Component control = mediaPlayer.getControlPanelComponent();
if (video != null) {
add(video, BorderLayout.CENTER); // place the video component in the panel
}
add(control, BorderLayout.SOUTH); // place the control in panel
mediaPlayer.start();
} catch (Exception e) {
}
}
private void initComponents() {
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getTopLevelAncestor());
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 720, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 480, Short.MAX_VALUE)
);
}
public static void main(String[] args) {
JFileChooser fileChooser = new JFileChooser();
fileChooser.showOpenDialog(null);
URL mediaUrl = null;
try {
mediaUrl = fileChooser.getSelectedFile().toURI().toURL();
} catch (MalformedURLException ex) {
System.out.println(ex);
}
JFrame mediaTest = new JFrame("Movie Player");
mediaTest.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MediaPlayer mediaPanel = new MediaPlayer(mediaUrl);
mediaTest.add(mediaPanel);
mediaTest.setSize(800, 700); // set the size of the player
mediaTest.setLocationRelativeTo(null);
mediaTest.setVisible(true);
}
}
Q3: 在Java中如何设置一个定时任务的代码应该怎么写?
指定定时任务的代码如下:
public void schedule(TimerTask task,Date time)
比如,我们希望定时任务2006年7月2日0时0分执行,只要给第二个参数传一个时间设置为2006年7月2日0时0分的Date对象就可以了.
有一种情况是,可能我们的程序启动的时候,已经是2006年7月3日了,这样的话,程序一启动,定时任务就开始执行了.
schedule最后一个重载的方法是
public void schedule(TimerTask task,Date firstTime,long period)
既然号称是定时任务,我们肯定希望由我们来指定任务指定的时间,显然上面的方法就不中用了,因为我们不知道程序什么时间开始运行,就没办法确定需要延时多少.没关系,schedule四个重载的方法还没用完呢.用下面这个就OK了。
Q4: java定时执行问题: 我想让一个Java代码在每小时的第25分钟执行一次的,这个怎么实现?
用spring quartz
public class MyJob{
//这里如果你定义实例变量,可用spring依赖注入,例如
private String job;
public void setJob(String job){
this.job = job;
}
//你要执行的操作
public void execute(){
}
}
spring 配置文件
beans-config.xml
?xml version="1.0" encoding="UTF-8"?
beans xmlns=""
xmlns:xsi=""
xsi:schemaLocation="
"
bean id = "myJob" class="MyJob"
!--如果有注入属性在这里写 property name = "job" value="hihi"/property --
/bean
bean id = "myjobDetail" class = "org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
property name="targetObject" ref="myJob"
/property
property name="targetMethod" value="execute"/property
/bean
bean id ="triggerBean" class="org.springframework.scheduling.quartz.CronTriggerBean"
property name="jobDetail" ref="myjobDetail"/
!-- 秒 分 小时 天 月 年--
property name="cronExpression" value="0 25 * * * ?"/
/bean
bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"
property name="triggers"
listref bean = "triggerBean"//list
/property
/bean
/beans
在主类中读取定义文件,任务计划自动运行。
public class Test(){
public void static main(String[] args){
ApplicationContext context = new ClassPathXmlApplicationContext("beans-config.xml");
}
}
将配置文件放在该项目的classpath下,一般你放在src目录下即可。也可以自己创建路径放置,在项目的.classpath中可配置下此路径。
最后导入spring的jar包就可以了。
java图片定时播放代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java图片定时播放代码怎么用、java图片定时播放代码的信息别忘了在本站进行查找喔。







