Haga un tablero de dibujo simple (línea recta o rectángulo)

Haz un tablero de dibujo simple

Aquí solo se muestra el código para dibujar líneas rectas y rectángulos, el resto se puede expandir libremente


paso:

1. Crea un formulario nuevo

2. Establecer las propiedades del formulario

3. Agrega un oyente de acción para el mouse.

4. Cree la clase MyListener para heredar la clase de interfaz MouseListener

5. Obtenga las coordenadas del punto de presionar y soltar del mouse

6. Crea un nuevo pincel para enderezar la pintura.


alrededores:

eclipse bajo win8


package lessonPackage;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class Draw extends JFrame
{
	public static void main(String[]args)
	{
		Draw db=new Draw();
		db.initFrame();
	}
	public void initFrame()
	{
		this.setTitle("画板");
		this.setSize(800,600);
		this.setLayout(new FlowLayout());
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(3);
		
		this.setVisible(true);
		//得到画笔,必须在窗体可见之后
		Graphics g=this.getGraphics();
		//安装监听器
		MyListener mouse=new MyListener(g);
		this.addMouseListener(mouse);
	}
}
package lessonPackage;
import java.awt.*;
import java.awt.event.*;
public class MyListener implements MouseListener
{
 public Graphics g1;
 public int x1,x2,y1,y2;
 //重载MyListener构造函数
 public MyListener(Graphics g)
 {
  g1=g;
 }
 /**
  * 鼠标按下时执行
  */
 public void mousePressed(MouseEvent e) 
 {
  //确定按下时坐标
  x1=e.getX();
  y1=e.getY();
 }
 /**
  * 鼠标释放时执行
  */
 public void mouseReleased(MouseEvent e) 
 {
  //确定释放时坐标
  x2=e.getX();
  y2=e.getY();
  //在按下和释放两点之间绘制图像,需要用画笔Graphics
  //g1.drawLine(x1, y1, x2, y2);
  int width=Math.abs(x2-x1);
  int height=Math.abs(y2-y1);
  int minX=Math.min(x1, x2);
  int minY=Math.min(y1, y2);
  g1.drawRect(minX, minY, width, height);
  
 }
 /**
  * 鼠标点击时执行
  */
 public void mouseClicked(MouseEvent e) 
 {
  
 }
 /**
  * 鼠标进入时执行
  */
 public void mouseEntered(MouseEvent e)
 {
  
 }
 /**
  * 鼠标出去时执行
  */
 public void mouseExited(MouseEvent e) 
 {
  
 }
 
}

Puntos importantes de conocimiento:

La relación entre clases ordinarias, clases abstractas y clases de interfaz.

1. Las clases ordinarias pueden llamar al constructor para construir objetos, pero las clases abstractas y las clases de interfaz no pueden, por lo que generalmente las clases de interfaz y las clases abstractas se utilizan como clases principales.

2. Las clases ordinarias no pueden llamar a métodos abstractos, mientras que las clases abstractas tienen métodos abstractos y las clases de interfaz solo pueden tener métodos abstractos. Por lo tanto, al heredar clases abstractas o

     Para las clases de interfaz, las clases ordinarias deben anular los métodos abstractos de la clase principal

3. Las clases ordinarias pueden heredar múltiples interfaces al mismo tiempo, pero solo se puede heredar una clase abstracta al mismo tiempo


 



Supongo que te gusta

Origin blog.csdn.net/dream_18/article/details/51571225
Recomendado
Clasificación