1、JPanel與Java繪圖1215 螢幕上的顯示畫面是由很多像素(螢幕上的顯示畫面是由很多像素(Pixel)所組成,用這些像素的明暗與色彩的配合,可以構成變化多端的文字、圖形與影像)所組成,用這些像素的明暗與色彩的配合,可以構成變化多端的文字、圖形與影像 Java.awt套件內套件內Graphics別可用繪製圖形和顯示文字,別可用繪製圖形和顯示文字,Image別可用進影像的處。別可用進影像的處。要在螢幕上繪製文字,還可以指定字型、樣式、大小要在螢幕上繪製文字,還可以指定字型、樣式、大小等格式呈現文字的外貌。等格式呈現文字的外貌。在圖形使用介面(在圖形使用介面(GUI)中的任何文字、圖形、影像,
2、都是由一點一點的像素所組成,而這些五顏色的像素必須有一塊畫板顯示,也就是畫布,或者是繪圖的環境)中的任何文字、圖形、影像,都是由一點一點的像素所組成,而這些五顏色的像素必須有一塊畫板顯示,也就是畫布,或者是繪圖的環境 Java提供提供JFrame(視窗)或(視窗)或JPanel(容器)(容器)等元件當畫布等元件當畫布Graphics別Graphics別 用用Java的的Graphics別產生的繪圖物件,可以在別產生的繪圖物件,可以在JFrame(視窗)上及(視窗)上及JPanel(容器)上繪圖(容器)上繪圖 import java.awt.*;import javax.swing.*;使用到使
3、用到paint()、getGraphics()、paintComponent()方法取得方法取得Graphics別的繪圖物件,以進繪製文字、線段、矩形、橢圓、扇型、多邊形別的繪圖物件,以進繪製文字、線段、矩形、橢圓、扇型、多邊形等圖形。等圖形。以JFrame視窗為畫布以JFrame視窗為畫布 以以JFrame(視窗)為畫布,整個視窗內部範圍皆屬繪圖區的範圍(視窗)為畫布,整個視窗內部範圍皆屬繪圖區的範圍 paint()方法方法 使用使用paint()方法取得方法取得Graphics物件,可在物件,可在JFrame視窗上繪圖視窗上繪圖 顯示視窗時,系統會自動呼叫顯示視窗時,系統會自動呼叫pain
4、t()方法取得方法取得Graphics物件重新繪製圖形或文字物件重新繪製圖形或文字範 JFrame視窗的座標系統視窗的座標系統 在在JFrame視窗上繪圖的座標系統,以視窗視窗上繪圖的座標系統,以視窗JFrame外殼的左上角為座標原點(外殼的左上角為座標原點(0,0),而往右則軸向正遞增;往下則軸向正遞增,以像素為單位。),而往右則軸向正遞增;往下則軸向正遞增,以像素為單位。getGraphics()方法方法 getGraphics()方法取得方法取得Graphics物件物件 使用使用paint()方法時,系統會自動呼叫以取得方法時,系統會自動呼叫以取得Graphics物件物件範以JPanel
5、容器為畫布以JPanel容器為畫布 以以JFrame視窗為畫布,繪圖區會是整個視窗,即視窗有多大,畫布就有多大。視窗為畫布,繪圖區會是整個視窗,即視窗有多大,畫布就有多大。改由改由JPanel容器當畫布,則可在視窗內取某一矩形範圍做為畫布。容器當畫布,則可在視窗內取某一矩形範圍做為畫布。paintComponent()方法方法 在在JPanel容器上繪圖使用容器上繪圖使用paintComponent()方法方法 顯示視窗或遇到顯示視窗或遇到repaint()敘述時,系統會自動呼叫敘述時,系統會自動呼叫paintComponent()方法取得方法取得Graphics物件重新繪製圖形或文字物件重新
6、繪製圖形或文字範getGraphics()方法方法 使用使用JPanel容器當畫布,要先建容器當畫布,要先建JPanel別的容器物件,而要取得別的容器物件,而要取得Graphics物件時,要用 容器物件物件時,要用 容器物件.getGraphics()方法建取得。方法建取得。範設定顏色與字形設定顏色與字形 設定顏色設定顏色 螢幕的色彩由紅色(螢幕的色彩由紅色(Red),色(),色(Green)與色()與色(Blue)所組成,簡稱)所組成,簡稱RGB 這三種顏色的值這三種顏色的值0255,值越大越,越小越暗。,值越大越,越小越暗。(0,0,0)為黑色,為黑色,(255,255,255)為白色,同
7、的組成顯示同的顏色為白色,同的組成顯示同的顏色 顏色的設定,就需要顏色的設定,就需要Color別別 Graphics物件的圖形可以用物件的圖形可以用Color別物件設定,其它的別物件設定,其它的swing元件,如元件,如JFrame、JPanel、JButton、JLabel、JTextField的背景色或文字標題顏色,都可以套用的背景色或文字標題顏色,都可以套用Color別物件別物件Color(int r,int g,int b)為為Color別的建構子,用建顏色物件別的建構子,用建顏色物件 Color rgb=new Color(r,g,b);Java提供一些常用顏色的常提供一些常用顏色的
8、常2.void setColor(顏色物件顏色物件)或或 void setColor(顏色值顏色值)對對Graphics別物件指定顏色值。別物件指定顏色值。簡簡 g.setColor(Color.blue);Color.blue為為Color別的常,也可以用前面的別的常,也可以用前面的rgb顏色物件。顏色物件。3.void setBackground(顏色物件顏色物件)或或 void setColor(顏色值顏色值)設定物件的背景顏色。設定物件的背景顏色。4.void setForeground(顏色物件顏色物件)或或 void setColor(顏色值顏色值)設定物件的前景顏色。設定物件的前
9、景顏色。5.void getBackground(顏色物件顏色物件)或或 void setColor(顏色值顏色值)取得物件的背景顏色。取得物件的背景顏色。6.void getForeground(顏色物件顏色物件)或或 void setColor(顏色值顏色值)取得物件的前景顏色。取得物件的前景顏色。設定字形設定字形 Font別物件提供文字的顯示格式,如:字型、字體大小、字體樣式別物件提供文字的顯示格式,如:字型、字體大小、字體樣式等等 除除Graphics物件的文字可以用物件的文字可以用Font別物件外,其它的別物件外,其它的swing元件,如元件,如JButton、JLabel、JTex
10、tField的文字標題,也都可以套用的文字標題,也都可以套用Font別物件別物件 Font(String name,int style,int size)為為Font別的建構子,用建字形物件,並可設定字型名稱、字體樣式及字體大小別的建構子,用建字形物件,並可設定字型名稱、字體樣式及字體大小 字型名稱:如字型名稱:如“Times New Roman”、“Arial”、“新細明體新細明體”、“標楷體標楷體”等名稱等名稱 字體樣式:即標準、斜體、粗體字體樣式:即標準、斜體、粗體等樣式,可以用常表示,分別是等樣式,可以用常表示,分別是Font.PLAIN、Font.ITALIC、Font.BOLD。如
11、果同樣式可以組合,如 斜體。如果同樣式可以組合,如 斜體+粗體,則組合樣式為粗體,則組合樣式為Font.ITALIC+Font.BOLD。字體大小:直接用 點 表示字體大小,如字體大小:直接用 點 表示字體大小,如 9、12、16、24 等等 簡簡:Font font1=new Font(標楷體標楷體,Font.ITALIC,24);void setFont(Font 字形物件字形物件)將已設定好的將已設定好的Font別物件提供給其它物件使用。別物件提供給其它物件使用。lblShow.setFont(font1);範繪圖方法繪圖方法 畫布的座標畫布的座標 常用的繪圖方法常用的繪圖方法 9_5_
12、1.javapoint別別 使用鼠的拖曳移動配合使用鼠的拖曳移動配合point別物件的使用,可以很方繪製出圖形別物件的使用,可以很方繪製出圖形 鼠指標在畫布上的點可以用鼠指標在畫布上的點可以用getPoint()取得取得 9_5_2.java 重繪方法重繪方法repaint()繪製直線時都是按住鼠鍵拖曳的同時,會一直顯示著拖曳出的暫時直線,直到放開鼠,再顯示真正所要繪製的直線繪製直線時都是按住鼠鍵拖曳的同時,會一直顯示著拖曳出的暫時直線,直到放開鼠,再顯示真正所要繪製的直線 使用重繪的方法,繪圖的工作要改寫在使用重繪的方法,繪圖的工作要改寫在paintComponent()中中 只繪製直線如此
13、,繪製其它幾何圖形也是如此。只繪製直線如此,繪製其它幾何圖形也是如此。9_5_3.java影像處影像處 將圖形顯示在畫布上將圖形顯示在畫布上 使圖形做縮小、放大、上下顚倒、左右反置的變化使圖形做縮小、放大、上下顚倒、左右反置的變化在畫布顯示影像在畫布顯示影像 在畫布顯示圖形的方法為在畫布顯示圖形的方法為drawImage()g.drawImage(Image img,int x,int y,ImageObserver observer)Image img:為:為Image物件。該物件的圖形取自存放在物件。該物件的圖形取自存放在ImageIcon物件內的圖形。物件內的圖形。int x:設定:設定
14、Image物件顯示在畫布時,其左上角在畫布的物件顯示在畫布時,其左上角在畫布的X座標位置。座標位置。int y:設定:設定Image物件顯示在畫布時,其左上角在畫布的物件顯示在畫布時,其左上角在畫布的Y座標位置。座標位置。ImageObserver observer:表示顯示圖片的物件,在此我們用:表示顯示圖片的物件,在此我們用 this 代表。代表。9_6_1.java 影像變形影像變形 Graphics別物件別物件g縮小或放大影像的方法縮小或放大影像的方法drawImage()g.drawImage(Image img,int x,int y,int w,int h,ImageObserv
15、er observer)int w、int h:設定:設定Image物件顯示時的寬與高。物件顯示時的寬與高。w、h設定值比真實圖案大,則顯示放大影像;反之,顯示縮小影像。設定值比真實圖案大,則顯示放大影像;反之,顯示縮小影像。翻轉影像翻轉影像 Graphics別物件別物件g翻轉影像的方法翻轉影像的方法drawImage()g.drawImage(Image img,int x1,int y1,int x2,int y2,intsx1,int sx2,int sx2,int sx2,ImageObserver observer)int x1、int y1:為:為Image物件顯示在畫布時的左上角
16、座標。物件顯示在畫布時的左上角座標。int x2、int y2:為:為Image物件顯示在畫布時的右下角座標。物件顯示在畫布時的右下角座標。int sx1、int sy1:從原始圖案座標位置中,設定做為顯示在左上角的點。:從原始圖案座標位置中,設定做為顯示在左上角的點。int sx2、int sy2:從原始圖案座標位置中,設定做為顯示在右下角的點。:從原始圖案座標位置中,設定做為顯示在右下角的點。9_6_2.java設定物件的邊框設定物件的邊框 JPanel容器可視為存放在容器可視為存放在JFrame視窗中的物件視窗中的物件 放入放入JFrame視窗的視窗的swing元件實體,如:元件實體,如
17、:JLabel標籤、標籤、JButton按鈕、按鈕、JTextField文字位文字位等物件,也都可以設定邊框等物件,也都可以設定邊框 9_7_1.java線條邊框線條邊框線條邊框是使用線條邊框是使用 BorderFactory 別的別的 createLineBorder()方法建的,而物件需再使用方法建的,而物件需再使用 setBorder()方法設定邊框。格式如下:方法設定邊框。格式如下:Color rgb:設定邊框的顏色。:設定邊框的顏色。int thick:設定邊框線的厚。該,則厚預設為:設定邊框線的厚。該,則厚預設為1像素。像素。體邊框體邊框體邊框是使用體邊框是使用 BorderFac
18、tory 別的別的 createBevelBorder()建的,而物件需再使用建的,而物件需再使用 setBorder()方法設定邊框。但是體邊框需要使用方法設定邊框。但是體邊框需要使用 javax.swing.border.*套件。格式如下:套件。格式如下:int type:設定體邊框的型,有浮凸、凹陷種,其設定常分別為:設定體邊框的型,有浮凸、凹陷種,其設定常分別為 BevelBorder.RAISED、BevelBorder.LOWERED。JPanel容器別的使用JPanel容器別的使用 Java的視窗應用程式的設計架構的視窗應用程式的設計架構 螢幕是一個大容器,可以同時存在幾個視窗螢幕是一個大容器,可以同時存在幾個視窗 JFrame視窗是個中型容器,可以同時放置幾個視窗是個中型容器,可以同時放置幾個JPanel容器和容器和swing別物件別物件 JPanel容器是個小容器,可以放置容器是個小容器,可以放置swing別物件或小的別物件或小的JPanel容器容器。JPanel容器別所建的物件用當做畫布容器別所建的物件用當做畫布 可以放置可以放置swing元件元件 9_8_1.java
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100