做一個簡易畫圖板(直線或矩形)
阿新 • • 發佈:2019-02-06
做一個簡易的畫圖板
這裡只演示畫直線和矩形的程式碼,其餘可自由拓展
步驟:
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,普通類可同時繼承多個介面,但只能同時繼承一個抽象類