1. 程式人生 > >做一個簡易畫圖板(直線或矩形)

做一個簡易畫圖板(直線或矩形)

做一個簡易的畫圖板

這裡只演示畫直線和矩形的程式碼,其餘可自由拓展

步驟:

1,新建窗體

2,設定窗體屬性

3,為滑鼠新增動作監聽器

4,建立MyListener類使之繼承介面類MouseListener

5,獲得滑鼠按下和釋放點的座標

6,新建畫筆,使畫成直線

環境:

win8下的eclipse

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) 
 {
  
 }
 
}

重要知識點:

普通類,抽象類,介面類之間的關係

1,普通類可以呼叫構造方法構造物件,但抽象類和介面類不可以,因此通常介面類和抽象類用來作為父類

2,普通類不能呼叫抽象方法,而抽象類中有抽象方法,介面類中只能有抽象方法,因此,當繼承抽象類或

     介面類時,普通類需重寫父類抽象方法

3,普通類可同時繼承多個介面,但只能同時繼承一個抽象類