import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.image.*;
import javax.swing.*;
import javax.swing.filechooser.*;
import java.io.*;
import java.applet.*;
public class PicViewer extends Applet implements ActionListener {
JPanel pathBar, picContainer, ctrBar;
JLabel pathInfo;
JButton openbtn, prebtn, nextbtn, zoominbtn, zoomoutbtn, oripicbtn, angleleftbtn,
anglerightbtn, exitbtn,deletebtn,savebtn;
Image pic; // 查看的图片
BufferedImage bufImage; //用于显示的缓冲区图像
BufferedImage oriBufImage; //原始缓冲区图像
Graphics2D bufImageG; //缓冲区图像的图形环境
String path, filename, dir; // 需要查看图片的路径
String[] pics; // 目录下所有指定格式的图片
int picWidth, picHeight; // 图片大小
int i = 0;
final double ZOOM_PERCENT = 0.15; // 每次放大和缩小的倍率
final String FILE_TYPE = ".jpg";
boolean hasPic, isangled;
double scaleX; //图像水平方向的缩放因子
double scaleY; //图像竖直方向的缩放因子
double radius; // 旋转角度
Filter filterJpg;
public void init() {
// 顶部路径栏
pathBar = new JPanel();
pathBar.setLayout(new BorderLayout());
pathInfo = new JLabel();
pathInfo.setText("图片查看器");
pathBar.add(pathInfo);
// 图片显示区域
picContainer = new JPanel();
picContainer.setBackground(Color.LIGHT_GRAY);
// 底部控制栏
ctrBar = new JPanel();
openbtn = new JButton("打开");
openbtn.addActionListener(this);
savebtn = new JButton("保存");
savebtn.addActionListener(this);
prebtn = new JButton("上一幅");
prebtn.addActionListener(this);
nextbtn = new JButton("下一幅");
nextbtn.addActionListener(this);
zoominbtn = new JButton("放大");
zoominbtn.addActionListener(this);
zoomoutbtn = new JButton("缩小");
zoomoutbtn.addActionListener(this);
oripicbtn = new JButton("原始");
oripicbtn.addActionListener(this);
angleleftbtn = new JButton("左旋");
angleleftbtn.addActionListener(this);
anglerightbtn = new JButton("右旋");
anglerightbtn.addActionListener(this);
deletebtn = new JButton("删除");
deletebtn.addActionListener(this);
exitbtn = new JButton("退出");
exitbtn.addActionListener(this);
ctrBar.add(openbtn);
ctrBar.add(zoominbtn);
ctrBar.add(zoomoutbtn);
ctrBar.add(oripicbtn);
ctrBar.add(prebtn);
ctrBar.add(nextbtn);
ctrBar.add(angleleftbtn);
ctrBar.add(anglerightbtn);
ctrBar.add(deletebtn);
ctrBar.add(savebtn);
ctrBar.add(exitbtn);
// 界面总布局
setLayout(new BorderLayout());
add(pathBar, BorderLayout.NORTH);
add(picContainer, BorderLayout.CENTER);
add(ctrBar, BorderLayout.SOUTH);
resize(640, 480);
scaleX = 1.0;
scaleY = 1.0;
radius = 0.0;
hasPic = false;
isangled = false;
dir = "";
prebtn.setEnabled(false);
nextbtn.setEnabled(false);
zoominbtn.setEnabled(fals
e);
zoomoutbtn.setEnabled(false);
angleleftbtn.setEnabled(false);
anglerightbtn.setEnabled(false);
oripicbtn.setEnabled(false);
deletebtn.setEnabled(false);
savebtn.setEnabled(false);
}
public void actionPerformed(ActionEvent e) {
JButton click = (JButton) e.getSource(); // 获取按键源
if(click == openbtn) {
open();
}
if(click == prebtn &;&; pic != null) {
pre();
}
if(click == nextbtn &;&; pic != null) {
next();
}
if(click == zoo