图片浏览器java_图片浏览器用java实现

该程序实现了图片的缩放以及浏览

package graphics;

/**

* 图片的缩放功能实现;

*为什么图片不能无限放大,因为Thread的run方法不断在调整。

*必须选择jpg或png的图片

*/

import java.applet.*;

import java.awt.Container;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.Image;

import java.awt.MouseInfo;

import java.awt.Point;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.awt.event.MouseMotionListener;

import java.awt.event.MouseWheelEvent;

import java.awt.event.MouseWheelListener;

import java.io.File;

import java.io.FileFilter;

import java.net.MalformedURLException;

import java.net.URL;

import javax.swing.Icon;

import javax.swing.ImageIcon;

import javax.swing.JButton;

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JSlider;

import javax.swing.event.AncestorEvent;

import javax.swing.event.AncestorListener;

import javax.swing.filechooser.FileNameExtensionFilter;

public class Zoom extends JFrame {

static AudioClip p=null;

File []f1;

File f2[];

int n;//n为计算队列中的图片个数

int gs=0;//为图片指针,指向图片当前的位置g=(n+g)%n

Thread th=null;

Thread th1=null;

boolean b1,b2,b3;

int width=200,height=170;

int x,y,x1,y1,x2,y2,x3,x4,y4;

int count;

int t;

int tt;

public Zoom(){

setTitle("刘凯图片相册");

File f=new File("C:\\Users\\liukai\\Desktop\\图片相册");

f2=f.listFiles();

f1=new File[50];

n=f2.length;

System.out.println(n);

for(int i=0;i

f1[i]=f2[i];

}

Container c=getContentPane();

setLayout(null);

final JPanel jp=new GJpanel();

jp.setBounds(0, 0, 400, 340);

JButton jb=new JButton("加图");//选择图片

jb.setBounds(320, 340, 80, 50);

jb.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

JFileChooser chooser=new JFileChooser();

chooser.setMultiSelectionEnabled(true);

FileNameExtensionFilter ft=new FileNameExtensionFilter("jpg&&png","png","gif","jpg");

chooser.setFileFilter(ft);

int re=chooser.showSaveDialog(jp);

if(re==JFileChooser.APPROVE_OPTION){

f1[n]=chooser.getSelectedFile();

n++;

gs=n-1;

System.out.println(n);

repaint();

}

}

});

final JSlider js=new JSlider();

js.setValue(40);

//js.setMaximum(100);

js.setPaintLabels(true);

js.setPaintTicks(true);

js.setPaintTrack(true);

js.setBounds(0, 350, 300, 30);

th=new Thread(new Runnable() {

@Override

public void run() {

while(true){

t=js.getValue();

width=200+2*t;

height=170+(int)(1.7*t);

x=t;

y=(int)((1.7*t)/2);

repaint();

try {

Thread.sleep(100);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

});

th1=new Thread(new Runnable() {

@Override

public void run() {

// TODO Auto-generated method stub

File g=new File("C:\\Users\\liukai\\Desktop\\夜空中最亮的星.wav");

URL u=null;

try {

u=g.toURL();

} catch (MalformedURLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

p=Applet.newAudioClip(u);

if(!b3){

p.loop();

b3=true;

}

}

});

jp.addMouseListener(new MouseListener() {

@Override

public void mouseReleased(MouseEvent e) {

// TODO Auto-generated method stub

}

@Override

public void mousePressed(MouseEvent e) {

// TODO Auto-generated method stub

}

@Override

public void mouseExited(MouseEvent e) {

// TODO Auto-generated method stub

}

@Override

public void mouseEntered(MouseEvent e) {

// TODO Auto-generated method stub

}

@Override

public void mouseClicked(MouseEvent e) {

Point pt2=MouseInfo.getPointerInfo().getLocation();

x4=pt2.x;

y4=pt2.y;

if(x4<71){

gs=gs-1;

}

if(x4>326&&y<340){

gs=gs+1;

}

repaint();

}

});

jp.addMouseMotionListener(new MouseMotionListener() {

@Override

public void mouseMoved(MouseEvent e) {

Point pt1=MouseInfo.getPointerInfo().getLocation();

x3=pt1.x;

if(x3<71){

b1=true;

}

else if(x3>326){

b2=true;

}else{

b1=false;

b2=false;

}repaint();

}

@Override

public void mouseDragged(MouseEvent e) {

}

});

jp.addMouseWheelListener(new MouseWheelListener() {

//此处添加滚动事件

public void mouseWheelMoved(MouseWheelEvent e) {

if(e.getWheelRotation()==1){

js.setValue(js.getValue()+(int)(5));

}

if(e.getWheelRotation()==-1){

js.setValue(js.getValue()+(int)(-(5)));

}

}

});

th1.start();

th.start();

c.add(js);

c.add(jp);

c.add(jb);

setSize(400, 400);

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setResizable(false);

}

public static void main(String[] args) {

new Zoom();

}

class GJpanel extends JPanel{//在这个JPanel上显示图片。

private Image buffer;

public void paint(Graphics g){

Graphics2D g2=(Graphics2D) g;

//g2.shear(0.3, 0);

if(f1!=null){//判断File数组是否为空

ImageIcon icon=new ImageIcon(f1[Math.abs((n+gs)%n)].getPath());

g2.drawImage(icon.getImage(), 100-x, 100-y, width, height, this);

//实现点击左右两边实现翻页

if(b1==true){

ImageIcon icon1=new ImageIcon(new File("C:\\Users\\liukai\\Desktop\\point1.png").getPath());

g2.drawImage(icon1.getImage(), 0,0,71,400,this);

}

if(b2==true){

ImageIcon icon2=new ImageIcon(new File("C:\\Users\\liukai\\Desktop\\point2.png").getPath());

g2.drawImage(icon2.getImage(), 326,0,76,400,this);

}

}

}

}

}

第一次写博客,如有错误之处,还请见谅。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值