📄 picshow.java
字号:
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.util.*;
import java.io.*;
import java.applet.*;
class MyMenu extends Frame implements ActionListener, KeyListener {
public String[] plist;
Image myImage;
boolean haveImage = false;
//用来设置图片大小
double n = 1.0;
//用来设置要播放的名字的变量
public int i;
String j = "jpg";
//声明一个公共变量用来保存openPic中的获取的目录,以便在showPic方法中调用
public String dir;
public MyMenu(String s) {
super(s);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});
Menu mn = new Menu("文件");
MenuItem miOpen = new MenuItem("打开");
MenuItem miExit = new MenuItem("退出");
mn.add(miOpen);
mn.addSeparator();
mn.add(miExit);
miOpen.addActionListener(this);
miExit.addActionListener(this);
addKeyListener(this);
Menu mn1 = new Menu("查看");
Menu mn2 = new Menu("缩放");
MenuItem up = new MenuItem("前一张");
MenuItem back = new MenuItem("后一张");
MenuItem miZoomin = new MenuItem("放大 (+)");
MenuItem miZoomout = new MenuItem("缩小 (-)");
MenuItem miZoom = new MenuItem("还原");
mn1.add(mn2);
mn2.add(miZoomin);
mn2.add(miZoom);
mn2.add(miZoomout);
mn1.addSeparator();
mn1.add(up);
mn1.add(back);
up.addActionListener(this);
back.addActionListener(this);
miZoomin.addActionListener(this);
miZoom.addActionListener(this);
miZoomout.addActionListener(this);
MenuBar mb = new MenuBar();
mb.add(mn);
mb.add(mn1);
setMenuBar(mb);
setSize(400, 300);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
String strCmd = e.getActionCommand();
if (strCmd.equals("退出")) {
System.exit(0);
}
if (strCmd.equals("打开")) {
openPic();
}
if (strCmd.equals("放大 (+)")) {
n *= 1.2;
}
if (strCmd.equals("缩小 (-)")) {
n *= 0.8;
}
if (strCmd.equals("还原")) {
n = 1.0;
}
if (strCmd.equals("前一张")) {
i--;
showPic();
}
if (strCmd.equals("后一张")) {
i++;
showPic();
}
repaint();
}
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_DOWN) {
i++;
showPic();
}
if (e.getKeyCode() == KeyEvent.VK_UP) {
i--;
showPic();
}
if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
n *= 1.2;
}
if (e.getKeyCode() == KeyEvent.VK_LEFT) {
n *= 0.8;
}
if (e.getKeyCode() == KeyEvent.VK_SPACE) {
n = 1;
}
repaint();
}
public void keyTyped(KeyEvent e) {}
public void keyReleased(KeyEvent e) {}
public void openPic() {
String picfilename = "",picname="",picdir = "";
FileDialog fd = new FileDialog(this, "Picture File");
fd.setVisible(true);
picdir = fd.getDirectory();
//把图片路径给公共变量DIR
dir = picdir;
picfilename = fd.getFile();
picname = picdir + picfilename;
File d = new File(dir);
plist = d.list(new dir(j));
Arrays.sort(plist);
//找到变量I所对应的当前获取的图片名称
for (int w = 0; w < plist.length; w++) {
if (plist[w].equals( picfilename)) {
i = w;
}
}
if (picfilename.endsWith("jpg")) {
showPic(picname);
}
else {
haveImage = false;
repaint();
}
System.out.println("File name: " + picname+"i="+i);
}
//显示前一张或下一张图片的图片
public void showPic() {
String picname="";
try {
//当播放到图片最后一张时自动跳转到第一张
if (i == plist.length) {
i = 0;
}
//当播放到图片第一张时自动跳转到最后一张
if (i < 0) {
i = plist.length;
}
picname = dir + plist[i];
showPic(picname);
System.out.println("File name: " + picname+"i="+i);
}
catch (ArrayIndexOutOfBoundsException e) {}
}
public void showPic(String picname) {
Toolkit t = getToolkit();
myImage = t.getImage(picname);
haveImage = true;
repaint();
}
public void paint(Graphics g) {
if (haveImage) {
Image imageBuffer = createImage(getSize().width, getSize().height);
Graphics gBuffer = imageBuffer.getGraphics();
gBuffer.drawImage(myImage, 0, 40, this);
gBuffer.dispose();
g.drawImage(imageBuffer, 0, 0, (int) (n * imageBuffer.getWidth(this)),
(int) (n * imageBuffer.getHeight(this)), this);
}
}
public boolean imageUpdate(Image img, int infoflags, int x, int y, int width,
int height) {
if ( (infoflags & ImageObserver.ALLBITS) != 0) {
repaint();
return false;
}
return true;
}
}
//程序入口
public class PicShow {
public static void main(String[] args) {
MyMenu myMenu = new MyMenu("图片显示程序");
}
}
//定义实现了文件名过滤器FilenameFilter接口的类
//把ACCEPT()方法中返回的TURE的文件名过滤出来
class dir
implements FilenameFilter {
String jpg;
dir(String jpg) {
this.jpg = jpg;
}
public boolean accept(File x, String y) {
return y.endsWith("." + jpg);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -