Java學習入門 -04-類(畫圖案例)

 

類的基本概念

  • 類是現實世界抽象爲數據集合的一種表達工具,在程序中我們把類作爲數據、及數據操作的容器,是一種自定義數據類型。
      
  • 類具有類型本身的屬性,也具有實例屬性。類變量和實例變量都叫成員變量
    ,類變量也叫靜態成員變量(static修飾符標誌);類方法和實例方法都叫成員方法,類方法也叫靜態方法(static修飾符標誌)。實例也是實際的例子,類似“int a”咱們就叫做變量a是類型int的實例化。
     
  • 關於public class,這個public是爲了方便能被外部的包導入引用。
     
       

    實例變量/實例方法

  • 定一個類本身和定義一個函數類類似,類本身不會自動做什麼事情,不會分配內存,也不會執行代碼。方法要執行,需要被實例方法調用,首頁需要初始化一個實例,這裏的實例也就是對象。
       
  • 實例化一個對象後,系統會給這個實例化變量開闢兩個內存空間:一個存放實際內容,一個存放實際內容的地址。如下聲明後賦值,聲明時會給變量確定一個存放地址的內存空間,該地址指向存儲內容的首地址。因爲這種變量本身不存儲數據內容,只存儲內容位置,我們也稱爲引用數據類型(上一節我們講過)。

    Point p = new Poiont();

 

  • 如果在方法內部調用同一個類的另一個方法,就不必使用this。同樣,在一個方法中如果沒有局部變量和成員變量同名,那麼在這個方法中使用成員變量也不必使用this。靜態成員也無法使用this(因爲沒有實例化)。
     
    • 實例化後,如果沒有給實例變量賦值,系統會自動給系統變量賦於該類型缺省值作爲初始默認值(上一節基本類型提到過)。
       
       

      類的構造方法

    • 類型與構造函數名相同,沒有返回值,也不能有返回值,構造函數返回值就是實例本身!
       
    • 一個類可以有多個構造方法,構造方法可以重載。一旦定義了構造方法,Java就不會再自動生成默認的構造方法了。
       
    • 構造方法可以私有(private),可以用在無法實例化的類,例如:Math等工具類不需要實例化;還有一種場景是隻能通過類靜態方法創建類的實例,因爲構造方法無法暴露在類外部,所以只能被靜態類方法調用,如:單例模式只能創建一個實例。
       
    • 子類會默認繼承父類的非私有成員變量和非私有成員方法,也包括構造方法(無參構造函數)。如果子類沒有顯示調用父類構造器,則自動調用父類的無參構造器;此時如果父類沒有默認構造器,則編譯器會報錯。

 
 
 

最後上一個 Java畫圖的代碼

主函數如下:

import javax.swing.JFrame;
import paint.MyCanvas;
public class HelloWorld {
JFrame jFrame;
public static void main(String[] args) {
// TODO 自動生成的方法存根
HelloWorld paintMain=new HelloWorld();
paintMain.initView();
}

public void initView()
{
    jFrame =new JFrame();
    jFrame.setBounds(100, 100, 500, 500);
    jFrame.setTitle("畫圖測試");
    jFrame.setLayout(null);

    MyCanvas myCanvas=new MyCanvas();//畫布
    myCanvas.setBounds(0,0, 500, 500);
    jFrame.add(myCanvas);
    jFrame.setVisible(true);
}

}

MyCanvas類如下:

package paint;

import java.awt.Canvas;
import java.awt.Graphics;

public class MyCanvas extends Canvas{
@ Override
public void paint(Graphics g) {
// TODO 自動生成的方法存根
super.paint(g);//直接輸入paint提示出來函數;
char[] a= {'顯','示','文','字'};
g.drawChars(a, 0, 4, 50, 150);// data數組,offset爲數據初始偏移量,length爲要繪製的字符數,x,y文本基線的xy座標,
g.drawString("字符測試01", 20, 20);// 注意,字符串型的x,y在字符中,而不是左上頂點;

}

}

畫圖函數參考

畫線段:drawLine

public abstract void drawLine(int x1,int y1,int x2,int y2)
在此圖形上下文的座標系中,使用當前顏色在點 (x1, y1) 和 (x2, y2) 之間畫一條線
參數:
x1 - 第一個點的 x 座標。
y1 - 第一個點的 y 座標。
x2 - 第二個點的 x 座標。
y2 - 第二個點的 y 座標。

畫矩形:drawRect

public void drawRect(int x,int y, int width, int height)
繪製指定矩形的邊框。矩形的左邊緣和右邊緣分別位於 x 和 x + width。上邊緣和下邊緣分別位於 y 和 y + height。使用圖形上下文的當前顏色繪製該矩形。

參數:
x - 要繪製矩形的 x 座標。
y - 要繪製矩形的 y 座標。
width - 要繪製矩形的寬度。
height - 要繪製矩形的高度。

畫橢圓形:drawOval

public abstract void drawOval(int x, int y,int width, int height)

繪製橢圓的邊框。得到一個圓或橢圓,它剛好能放入由 x、y、width 和 height 參數指定的矩形中。
橢圓覆蓋區域的寬度爲 width + 1 像素,高度爲 height + 1 像素。

參數:
x - 要繪製橢圓的左上角的 x 座標。
y - 要繪製橢圓的左上角的 y 座標。
width - 要繪製橢圓的寬度。
height - 要繪製橢圓的高度。

畫帶顏色的圖形:setColor

public abstract void setColor(Color c)
將此圖形上下文的當前顏色設置爲指定顏色。使用此圖形上下文的所有後續圖形操作均使用這個指定的顏色。

參數:
c - 新的呈現顏色。

畫圓:drawRoundRect

public abstract void drawRoundRect(int x, int y,int width,int height,int arcWidth,int arcHeight)
用此圖形上下文的當前顏色繪製圓角矩形的邊框。矩形的左邊緣和右邊緣分別位於 x 和 x + width。矩形的上邊緣和下邊緣分別位於 y 和 y + height。

參數:
x - 要繪製矩形的 x 座標。
y - 要繪製矩形的 y 座標。
width - 要繪製矩形的寬度。
height - 要繪製矩形的高度。
arcWidth - 4 個角弧度的水平直徑。
arcHeight - 4 個角弧度的垂直直徑。

填充橢圓:fillOval

看看它的參數:
fillOval(int x,int y ,int width ,int height)
前兩個X 和 Y是矩形框的左上角的座標,width和height是寬和高。

畫多邊形

    int px[] = { 210, 220, 270, 250, 240 };
    int py[] = { 220, 250, 300, 270, 220 };
    g.drawPolygon(px, py, px.length);

顯示文字

g.drawString(String str, int x,int y);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章