图片浏览器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);
}
}
}
}
}
第一次写博客,如有错误之处,还请见谅。
图片浏览器java程序_图片浏览器用java实现相关推荐
- 一个java程序_从另一个java程序运行java程序
我正在研究一个简单的java程序.它只是编译并执行另一个java程序.我正在使用Runtime.exec()函数进行编译和运行.编译没有问题.但是当它运行时,如果第二个程序需要输入来从键盘读取,我不能 ...
- 如何创建第一个java程序_创建第一个java程序
开发环境:ubuntu 10.04 + eclipse 方法一:打开eclipse编译器,选择 File->New->Java project,输入工程名称,点击finish,在工程目录中 ...
- 比较经典的java程序_一些经典的java小程序代码,最好能复制后直接使用的 爱问知识人...
一般排序的方法是比较经典的,你可以去网上找,很多的.各种排序方法,一般很多程序,尤其是考试什么的,都是需要的.像经典的冒泡排序.public static void sort(int[] values ...
- 飞行的小鸟java程序_飞扬的小鸟 Java基础案例
1业务需求分析: 找对象(东西),以及对象关系! BirdGame |-- 地面Ground |-- 小鸟Bird |-- 多个柱子 2.软件概要设计:计算机只能按顺序"处理数据" ...
- 亲戚关系关系算法java程序_亲戚称呼计算器java代码
展开全部 计算器java代码62616964757a686964616fe58685e5aeb931333337386663import java.awt.BorderLayout; import j ...
- 第一段Java程序_借助Win控制命令台编译执行 编辑器Notepad++
第一段Java程序_借助Win控制命令台编译执行 编辑器Notepad++ 准备代码: 第一次编译: 显然需要先配置环境变量: 先找到java.exe和javac.exe所在的文件夹位置: 此电脑-& ...
- 定时执行java程序_如何让Java程序定时运行
由于项目开发的需要,必须实现让一个Java程 序定时运行.比如,我的项目中,有一个网络蜘蛛,需要从互联网上抓取数据,与其配合,有另一个程序来对新抓取的页面进行索引的创建,由于数据源更新频率不 高,我们 ...
- 编译运行一个java程序_如何从另一个Java程序编译和运行Java程序
编译运行一个java程序 Have you ever thought if it's possible to compile and run a java program from another j ...
- ie8 阻止java运行_解决IE屏蔽Java Applet问题的方法
利用Java虚拟机程序来实现,一般通过在IE中设置ActiveX控件启用选项即可解决. 什么是ActiveX控件? ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中 ...
最新文章
- 数据文件实验#OCP#
- mongodb 事务_MongoDB 事务 — 基础入门篇
- SpringMVC 的执行流程
- Tomcat的下载及环境变量配置
- 7.1 pdo 宝塔面板php_腾讯云服务器建站系列 – 熟练宝塔面板部署网站/快速安装HTTPS加密...
- oracle退税率后台表,Oracle ERP表信息整理(AP).doc
- SSM小区停车场管理系统
- linux嵌入式工控机编程,Linux嵌入式工控机的特点
- 原生JS实现各种运动之匀速运动
- 梁冬一席演讲:人生的最高境界是“不二”
- 经典排序算法动图图解
- echarts问题整理之多条基准线设置
- 苹果公司的企业文化_企业文化到底有什么用?
- linux命令统计word字数,Word:不启动也能进行字数统计(转)
- unity开发VR,没有VR设备解决方式
- LCD显示屏 字模 俄文字体显示8*16
- RPA - Robotic process automation (机器人流程自动化)
- 转载 顺藤摸瓜:让盗号者得不偿失
- word插入图片,嵌入型,无效果
- linux 图形库编程资源