⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 39.txt

📁 是一个 java 基础学习软件 有设计说明
💻 TXT
字号:
// import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import java.awt.geom.*;
import java.util.*;

// 显示框架,并得到屏幕像素

public class KeyTest
{
   public static void main(String[] args)
   {
      EventFrame frame = new EventFrame();
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	  frame.show();
	  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}


//  define Frame

class EventFrame extends JFrame
{
   public EventFrame()
   {
      setSize(WIDTH, HEIGHT);
      setTitle("键盘、鼠标测试");
   		//  create a panel
   	  EventPanel panel = new EventPanel();
   	 	 // add panel to frame
   	  Container contentPane = getContentPane();
   	  contentPane.add(panel);
	 	 //draw a string
   }

   public static final int WIDTH = 400;
   public static final int HEIGHT = 400;

}

//  define panel

class EventPanel extends JPanel
{
	//private String s ;

	public EventPanel()
	{

	// sketch with keyboard
		last  = new Point2D.Double(200,300);
		lines = new ArrayList();
		KeyHandler listener = new KeyHandler();   // KeyHandler inside class
		addKeyListener(listener);
    // mouse opration
    	 squares = new  ArrayList();
    	 current = null;
    	 MouseHandler listener1 = new MouseHandler();                // MouseHandler inside class
    	 MouseMotionHandler listener2 = new MouseMotionHandler();   // MouseMotionHandler inside class

		 addMouseListener(listener1);
		 addMouseMotionListener(listener2);

	}
		//copyButton.addActionListener(this);
		//pasteButton.addActionListener(this);
	public boolean isFocusTraversable()
	{
		return true;
	}
	// 	define
	private Point2D last;
	private ArrayList lines;
	private ArrayList squares;
	private Rectangle2D current;

	private static final int SMALL_INCREMENT = 10;
	private static final int LARGE_INCREMENT = 20;
	private static final int SIDELENGTH = 10;

	// draw line
	public void  addL (int x, int y)
	{
		Point2D end = new Point2D.Double(last.getX()+x,last.getY()+y);
		Line2D line = new Line2D.Double(last ,end );
		lines.add(line);
		repaint();
		last = end ;
	}

	//draw Rectangle

	public Rectangle2D find(Point2D p)
	{
		for(int i=0;i<squares.size();i++)
		{
			Rectangle2D r = (Rectangle2D)squares.get(i);
			if (r.contains(p)) return r;
		}
		return null;
	}

	public void addR (Point2D p)
	{
		double x = p.getX();
		double y = p.getY();

		current = new Rectangle2D.Double(
			x-SIDELENGTH/2,y-SIDELENGTH/2,SIDELENGTH,SIDELENGTH);
		squares.add(current);
		repaint();
	}

	public void removeR(Rectangle2D r)
	{
		if (r==null) return;
		if (r== current) current = null;
		squares.remove(r);
		repaint();
	}


	public void paintComponent(Graphics g)
	{
		super.paintComponent (g);
		Graphics2D g2 = (Graphics2D)g;

		for (int i=0 ; i<lines.size();i++)
			g2.draw((Line2D)lines.get(i));    //draw all

		for (int i=0 ; i<squares.size();i++)
			g2.draw((Rectangle2D)squares.get(i));    //draw all
	}


	/// class KeyHandler
	private class KeyHandler implements KeyListener
	{
		public void keyPressed(KeyEvent event)
		{
			int keyCode = event.getKeyCode();
			//
			int d;
			if(event.isShiftDown())
				d = LARGE_INCREMENT;
			else
				d = SMALL_INCREMENT;
			//add line segment
			if (keyCode == KeyEvent.VK_LEFT)
				addL(-d,0);
			else if(keyCode == KeyEvent.VK_RIGHT)
				addL(d,0);
			else if(keyCode == KeyEvent.VK_DOWN)
				addL(0,d);
			else if(keyCode == KeyEvent.VK_UP)
				addL(0,-d);


		}
		public void keyReleased(KeyEvent event)
		{
		}
		public void keyTyped(KeyEvent event)
		{
			char keyChar = event.getKeyChar();
			// set distance
			int d ;
			if (Character.isUpperCase(keyChar))
			{
				d =  LARGE_INCREMENT;
				keyChar = Character.toLowerCase(keyChar);
			}
			else
				d = SMALL_INCREMENT;
			//
			if (keyChar == 'h') addL (-d,0);
			else if(keyChar == 'l')
				addL(d,0);
			else if(keyChar == 'k')
				addL(0,d);
			else if(keyChar == 'j')
				addL(0,-d);
		}
	}
	////   mouse opration
	private class MouseHandler extends MouseAdapter
	{
		public void mousePressed(MouseEvent e)
		{
			current = find(e.getPoint());
			if(current == null)
				addR(e.getPoint());

		}
		public void mouseClicked(MouseEvent e)
		{
			current = find(e.getPoint());
			if (current != null && e.getClickCount()>=1)
				removeR(current);

		}
	}
	private class MouseMotionHandler implements MouseMotionListener
	{
		public void mouseDragged(MouseEvent e)
		{
			if(current != null)
			{
				int x = e.getX();
				int y = e.getY();
				//
				current.setFrame(
					x-SIDELENGTH/2,y-SIDELENGTH/2,SIDELENGTH,SIDELENGTH);
				repaint();
			}

		}

		//  set  mouse cursor  MOVE_CURSOR
		public void mouseMoved(MouseEvent e)
		{
			if (find(e.getPoint()) == null)
				setCursor(Cursor.getPredefinedCursor(Cursor.TEXT_CURSOR));
			else
				setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
		}
	}



}
//*/"键盘、鼠标测试"

⌨️ 快捷键说明

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