facefrm.java

来自「简单的聊天程序」· Java 代码 · 共 81 行

JAVA
81
字号
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class FaceFrm extends JDialog{

	public FaceFrm(){
		this.add(new FaceCanvas());
		this.setUndecorated(true);
		this.pack();
	}
	private class FaceCanvas extends Canvas{
		private ImageIcon img;
		private int CELL;
		private int currentX,currentY;
		public FaceCanvas(){
			img = new ImageIcon("GIF/faces.gif");
			currentX =0;
			currentY =0;
			this.setPreferredSize(
					new Dimension(img.getIconWidth(),img.getIconHeight()));
			CELL = img.getIconWidth()/15;
			this.setFocusable(true);
			hookEvent();
		}
		public void paint(Graphics g){
			g.drawImage(img.getImage(), 0, 0, null);
			g.draw3DRect(currentX*CELL, currentY*CELL, CELL,CELL,true);
		}
		private void hookEvent(){
			this.addMouseMotionListener(new MouseMotionAdapter(){
				public void mouseMoved(MouseEvent e){
					currentX = e.getPoint().x/CELL;
					currentY = e.getPoint().y/CELL;
					FaceCanvas.this.repaint();
				}
			});
			this.addMouseListener(new MouseAdapter(){
				public void mouseClicked(MouseEvent e){
					 dealEnter();
				}
				public void mouseExited(MouseEvent e){
					FaceFrm.this.setVisible(false);
				}
			});
			this.addKeyListener(new KeyAdapter(){
				public void keyPressed(KeyEvent e){
					switch(e.getKeyCode()){
					case KeyEvent.VK_ESCAPE:
						FaceFrm.this.setVisible(false);
						break;
					case KeyEvent.VK_UP:
						currentY = currentY-1<0?0:currentY-1;
						FaceCanvas.this.repaint();
						break;
					case KeyEvent.VK_DOWN:
						currentY = (currentY+1) % 6;
						FaceCanvas.this.repaint();
						break;
					case KeyEvent.VK_RIGHT:
						currentX = (currentX+1) % 16;
						FaceCanvas.this.repaint();
						break;
					case KeyEvent.VK_LEFT:
						currentX = currentX-1<0?0:currentX-1;
						FaceCanvas.this.repaint();
						break;
					case KeyEvent.VK_ENTER:
						dealEnter();
					}
				}
			});
		}
		private void dealEnter(){
			System.out.println("good");
		}

	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?