请教java高手们,帮我写一个java编写的图片浏览器,功能如下:有自动浏览功能,每隔几秒图片自动翻页。用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教java高手们,帮我写一个java编写的图片浏览器,功能如下:有自动浏览功能,每隔几秒图片自动翻页。用相关的知识,希望对你有一定的参考价值。

请教java高手们,帮我写一个java编写的图片浏览器,
功能如下:
有自动浏览功能,每隔几秒图片自动翻页;
用背景音乐的设置;
有开始、停止、下一页,上一页等功能。

谢谢了!

//改编的,CopyOfImageViewer.java 打开一个有图片的文件夹就可浏览了。

//MP3播放相关库到:http://www.javazoom.net/javalayer/sources.html 下载

//将下载到的zip文件里的 jl1.0.1.jar 复制到 JDK目录下的 jre/lib/ext/ 目录里即可.

//将 源代码 main 方法里的 playMp3("d:\\\\bad.mp3");改成自己的地址,换种方法BMP是可以支持的,这里不行暂不讨论。

import java.awt.*;

import java.awt.event.*;

import java.io.*;

import javax.swing.*;

import javazoom.jl.player.Player;

public class CopyOfImageViewer implements ActionListener,Runnable 

 JPanel bts;

 JLabel pl;

 JScrollPane jsp;

 JButton cf,start,next,prev,stop;

 JFrame f;

 JFileChooser fc;

 File [] sf;

 int index;

 Thread auto;

 boolean autoFlag;

 int delay=5*1000;

 //这里就是GUI布局

 CopyOfImageViewer()

  pl=new JLabel();

  pl.setHorizontalAlignment(JLabel.CENTER);

  jsp=new JScrollPane(pl);

  start=new JButton("start");

  next=new JButton(">");

  prev=new JButton("<");

  stop=new JButton("stop");

  bts=new JPanel(new FlowLayout(FlowLayout.CENTER));

  bts.add(start);

  bts.add(prev);

  bts.add(next);

  bts.add(stop);

  cf=new JButton("Select a picture folder");

  fc=new JFileChooser();

  fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

  f=new JFrame();

  f.setDefaultCloseOperation(3);

  f.getContentPane().add(cf,"North");

  f.getContentPane().add(jsp,"Center");

  f.getContentPane().add(bts,"South");

  f.setSize(400,300);

  f.setLocationRelativeTo(null);

  f.setVisible(true);

  //给按钮加入事件侦听器

  start.addActionListener(this);

  next.addActionListener(this);

  prev.addActionListener(this);

  stop.addActionListener(this);

  cf.addActionListener(this);

  auto=new Thread(this);

  auto.start();

 

 

 public static void main(String[] args) 

  try

   UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");

  catch(Exception e)

   try

    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

   catch(Exception e2)

  

  new CopyOfImageViewer();

  playMp3("d:\\\\bad.mp3");

 

 //简单MP3播放

 private static void playMp3(String file)

  try

   Player p = new Player(new FileInputStream(file));

   p.play();

  catch(Exception e)

 

//处理各按键事件

 public void actionPerformed(ActionEvent e) 

  Object src=e.getSource();

  if(src==cf)

   int o=fc.showOpenDialog(f);

   if(o==JFileChooser.APPROVE_OPTION)

    sf=fc.getSelectedFile().listFiles(new FilenameFilter()

     //合法的文件后缀

     String[] suf=".PNG",".GIF",".JPG",;

     public boolean accept(File dir, String name) 

      name=name.toUpperCase();

      for(int i=0; i<suf.length; i++)

       if(name.endsWith(suf[i]))return true;

      return false;

     

    );

    if(sf.length>0)

     index=0;

     showPic();

    

   

  

  if(sf==null||sf.length==0)return;

  if(src==start)startB();

  else if(src==stop)stopB();

  else if(src==next)next();

  else if(src==prev)prev();

 

 void prev()

  index=--index<0?sf.length-1:index;

  showPic();

 

 void next()

  index=++index>sf.length-1?0:index;

  showPic();

 

 public void run()

  while(true)

   if(sf!=null && sf.length>0 && autoFlag)

    try Thread.sleep(delay); catch (Exception e) 

    next();

   

   try Thread.sleep(100); catch (Exception e) 

  

 

private void stopB() 

  autoFlag=false;

 

private void startB() 

  autoFlag=true;

 

 //显示图片

 private void showPic() 

  if(sf==null || sf.length==0)return;

  pl.setIcon(new ImageIcon(sf[index].getAbsolutePath()));

  System.out.println(sf[index].getAbsolutePath());

 

参考技术A 我搞出来了!效果绝对让你满意!呵呵……(但有一点缺陷:没有背景音乐,因为我暂时还没有弄过有音乐的东西)。
准备工作如下(最好你直接HI我,我把整个项目的代码给你):
在根目录(src)下放置1.jpg 2.jpg 3.jpg图片。
代码如下:
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Dimension;
import javax.swing.JLabel;
import java.awt.Rectangle;
import javax.swing.SwingConstants;
import javax.swing.JButton;
import javax.swing.ImageIcon;
import java.util.*;

public class LiuLanQi extends JFrame

private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JLabel jLabel = null;
private JLabel jLabel1 = null;
private JButton jButton = null;
private JButton jButton1 = null;
private JButton jButton2 = null;
private JButton jButton3 = null;
private int myCounter=1;
private Timer timer=null;

/**
* This is the default constructor
*/
public LiuLanQi()
super();
initialize();


/**
* This method initializes this
*
* @return void
*/
private void initialize()
this.setSize(375, 343);
this.setContentPane(getJContentPane());
this.setTitle("JFrame");
this.addWindowListener(new java.awt.event.WindowAdapter()
public void windowClosing(java.awt.event.WindowEvent e)
System.exit(0);

);
this.setVisible(true);


/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane()
if (jContentPane == null)
jLabel1 = new JLabel();
jLabel1.setBounds(new Rectangle(52, 58, 250, 169));
jLabel1.setHorizontalAlignment(SwingConstants.CENTER);
jLabel1.setHorizontalTextPosition(SwingConstants.CENTER);
jLabel1.setIcon(new ImageIcon(getClass().getResource("/1.jpg")));
jLabel1.setText("");
jLabel = new JLabel();
jLabel.setBounds(new Rectangle(52, 33, 65, 18));
jLabel.setText("我的爱图:");
jContentPane = new JPanel();
jContentPane.setLayout(null);
jContentPane.add(jLabel, null);
jContentPane.add(jLabel1, null);
jContentPane.add(getJButton(), null);
jContentPane.add(getJButton1(), null);
jContentPane.add(getJButton2(), null);
jContentPane.add(getJButton3(), null);

return jContentPane;


/**
* This method initializes jButton
*
* @return javax.swing.JButton
*/
private JButton getJButton()
if (jButton == null)
jButton = new JButton();
jButton.setBounds(new Rectangle(9, 247, 80, 28));
jButton.setText("开始");
jButton.addActionListener(new java.awt.event.ActionListener()
public void actionPerformed(java.awt.event.ActionEvent e)
timer = new Timer();
timer.schedule(new MyTask(), 1000, 2000);

);

return jButton;


/**
* This method initializes jButton1
*
* @return javax.swing.JButton
*/
private JButton getJButton1()
if (jButton1 == null)
jButton1 = new JButton();
jButton1.setBounds(new Rectangle(98, 247, 80, 28));
jButton1.setText("停止");
jButton1.addActionListener(new java.awt.event.ActionListener()
public void actionPerformed(java.awt.event.ActionEvent e)
timer.cancel();

);

return jButton1;


/**
* This method initializes jButton2
*
* @return javax.swing.JButton
*/
private JButton getJButton2()
if (jButton2 == null)
jButton2 = new JButton();
jButton2.setBounds(new Rectangle(187, 247, 80, 28));
jButton2.setText("上一张");
jButton2.addActionListener(new java.awt.event.ActionListener()
public void actionPerformed(java.awt.event.ActionEvent e)
myCounter-=1;
if(myCounter==0)
myCounter=3;

jLabel1.setIcon(new ImageIcon(getClass().getResource("/"+myCounter+".jpg")));

);

return jButton2;


/**
* This method initializes jButton3
*
* @return javax.swing.JButton
*/
private JButton getJButton3()
if (jButton3 == null)
jButton3 = new JButton();
jButton3.setBounds(new Rectangle(276, 247, 80, 28));
jButton3.setText("下一张");
jButton3.addActionListener(new java.awt.event.ActionListener()
public void actionPerformed(java.awt.event.ActionEvent e)
myCounter+=1;
if(myCounter==4)
myCounter=1;

jLabel1.setIcon(new ImageIcon(getClass().getResource("/"+myCounter+".jpg")));

);

return jButton3;

class MyTask extends java.util.TimerTask
public void run()
myCounter+=1;
if(myCounter==4)
myCounter=1;

jLabel1.setIcon(new ImageIcon(getClass().getResource("/"+myCounter+".jpg")));


public static void main(String args[])
new LiuLanQi();


// @jve:decl-index=0:visual-constraint="10,10"

(0079007的答案我也想运行一下看看效果,但代码是有错误的……不能正确编译)
参考技术B

bmp有难度,其它参考楼上的,自己玩去吧

参考技术C 废物东西.. 参考技术D zhanzuo !

请教Java myBatis高手一个“#”、“$”、“'”、“%”包裹字符串时的整体字符串整体的含义。

高手,小弟的遇到的场景如下图: 希望高手能够点拨四个问题: 1.“#”包裹的字符串整体,表示什么含义? 2.“$”包裹的字符串整体,表示什么含义? 3.“'”包裹的字符串整体,表示什么含义? 4.“%”包裹的字符串整体,表示什么含义?

参考技术A

    #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".

     $将传入的数据直接显示生成在sql中。如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id,  如果传入的值是id,则解析成的sql为order by id.

    '包裹的字符串将直接当着值

    %包裹字符串表是模糊匹配

参考技术B #是mybatis参数替换的一个标识符,会在传入的参数前后加上'单引号,可防止sql注入
$和#差不多,只是原样展示,不加'单引号
' 看你的图应该是sql语句的东西,就是个单引号,这是sql的基础
%是sql的东西,表示N多字符。本回答被提问者采纳

以上是关于请教java高手们,帮我写一个java编写的图片浏览器,功能如下:有自动浏览功能,每隔几秒图片自动翻页。用的主要内容,如果未能解决你的问题,请参考以下文章

请教高手教我如何配置java编译器

帮我做一下题,JAVA的,但是我要原因,错的题就麻烦高手给我写的详细点吧!谢谢啊!

请教DELPHI中截图位置的问题,请高手们指点一下.谢谢啦

请教Java SE高手一个简单的“@SuppressWarnings("unlikely-arg-type")”注释的含义是啥?

JAVA高手来帮帮我

求高手帮我写一段HTML代码,要求鼠标指向一张图片时图片加白色或者红色边框,移开时又恢复原样!谢了