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

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);

}

}

}

}

}

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

图片浏览器java程序_图片浏览器用java实现相关推荐

  1. 一个java程序_从另一个java程序运行java程序

    我正在研究一个简单的java程序.它只是编译并执行另一个java程序.我正在使用Runtime.exec()函数进行编译和运行.编译没有问题.但是当它运行时,如果第二个程序需要输入来从键盘读取,我不能 ...

  2. 如何创建第一个java程序_创建第一个java程序

    开发环境:ubuntu 10.04 + eclipse 方法一:打开eclipse编译器,选择 File->New->Java project,输入工程名称,点击finish,在工程目录中 ...

  3. 比较经典的java程序_一些经典的java小程序代码,最好能复制后直接使用的 爱问知识人...

    一般排序的方法是比较经典的,你可以去网上找,很多的.各种排序方法,一般很多程序,尤其是考试什么的,都是需要的.像经典的冒泡排序.public static void sort(int[] values ...

  4. 飞行的小鸟java程序_飞扬的小鸟 Java基础案例

    1业务需求分析: 找对象(东西),以及对象关系! BirdGame |-- 地面Ground |-- 小鸟Bird |-- 多个柱子 2.软件概要设计:计算机只能按顺序"处理数据" ...

  5. 亲戚关系关系算法java程序_亲戚称呼计算器java代码

    展开全部 计算器java代码62616964757a686964616fe58685e5aeb931333337386663import java.awt.BorderLayout; import j ...

  6. 第一段Java程序_借助Win控制命令台编译执行 编辑器Notepad++

    第一段Java程序_借助Win控制命令台编译执行 编辑器Notepad++ 准备代码: 第一次编译: 显然需要先配置环境变量: 先找到java.exe和javac.exe所在的文件夹位置: 此电脑-& ...

  7. 定时执行java程序_如何让Java程序定时运行

    由于项目开发的需要,必须实现让一个Java程 序定时运行.比如,我的项目中,有一个网络蜘蛛,需要从互联网上抓取数据,与其配合,有另一个程序来对新抓取的页面进行索引的创建,由于数据源更新频率不 高,我们 ...

  8. 编译运行一个java程序_如何从另一个Java程序编译和运行Java程序

    编译运行一个java程序 Have you ever thought if it's possible to compile and run a java program from another j ...

  9. ie8 阻止java运行_解决IE屏蔽Java Applet问题的方法

    利用Java虚拟机程序来实现,一般通过在IE中设置ActiveX控件启用选项即可解决. 什么是ActiveX控件? ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中 ...

最新文章

  1. 数据文件实验#OCP#
  2. mongodb 事务_MongoDB 事务 — 基础入门篇
  3. SpringMVC 的执行流程
  4. Tomcat的下载及环境变量配置
  5. 7.1 pdo 宝塔面板php_腾讯云服务器建站系列 – 熟练宝塔面板部署网站/快速安装HTTPS加密...
  6. oracle退税率后台表,Oracle ERP表信息整理(AP).doc
  7. SSM小区停车场管理系统
  8. linux嵌入式工控机编程,Linux嵌入式工控机的特点
  9. 原生JS实现各种运动之匀速运动
  10. 梁冬一席演讲:人生的最高境界是“不二”
  11. 经典排序算法动图图解
  12. echarts问题整理之多条基准线设置
  13. 苹果公司的企业文化_企业文化到底有什么用?
  14. linux命令统计word字数,Word:不启动也能进行字数统计(转)
  15. unity开发VR,没有VR设备解决方式
  16. LCD显示屏 字模 俄文字体显示8*16
  17. RPA - Robotic process automation (机器人流程自动化)
  18. 转载 顺藤摸瓜:让盗号者得不偿失
  19. word插入图片,嵌入型,无效果
  20. linux 图形库编程资源

热门文章

  1. Android文字实现跑马灯效果——两种方法实现
  2. c打包html,cmake使用教程(十一)-使用cpack打包源码并编写自动化脚本上传到仓库...
  3. 数据库设计三大范式:
  4. 第一学:pytorch入门60min
  5. 智能家居时代,怎样选择一把你心底里切实需要的智能门锁?
  6. 「NFT 之王」无聊猿与品牌的跨界营销!
  7. service层调用service层的方法,并切换数据库调用不同数据库获取数据
  8. HTML中 <img>标签的用法
  9. odbc配置以及一个简单的java连接的代码编写
  10. pygame--图片随键盘移动