轉自:http://blog.sina.com.cn/s/blog_4c7656e6010007tn.html
無色天空
1.Awt簡介
1)圖形用戶界面(GUI)可以通過鍵盤或鼠標來響應用戶的操作。
2)抽象窗口工具包(AWT)是一組Java類,此組Java類允許創建圖形用戶界面(GUI)。
3)AWT提供用於創建生動而高效的GUI的各種組件。
2.創建GUI
1)容器(container)
A.可以存放組件的區域,可在容器上進行繪制和着色
B.java.awt包中的Container類可直接或間接派生出兩個常用容器:框架(Frame類)和面板(Panel類)。
C.框架是一個帶有邊框的獨立的窗口。
D.面板是包含在窗口中的一個不帶邊框的區域。
2)框架(Frame)
A.框架是獨立於Applet和瀏覽器的一個窗口。
B.可以通過以下任一構造函數來創建:
C.Frame():創建一個不含標題的標准窗口
D.Frame(String Title): 創建一個含有標題的窗口,這個標題是由參數title指定的。
E.當一個Frame窗口被創建以后,需要調用setSize()方法來設置窗口的大小,並調用setVisible()來顯示窗口。
3)面板 (Panel)
A.面板不是一個單獨的窗口,它只是包含在窗口中的一個區域。
B.面板是可以將許多組件組合起來的一種容器。
C.最簡單的創建面板的方式就是通過面板的構造函數 Panel() 來進行。
D.必須將面板添加到窗體中。
3.在框架中顯示信息
1)所有的圖形被畫到相關聯的窗口中。
2)完全可以直接在框架(Frame)中繪入文本信息,甚至可以直接在框架中繪圖。
3)框架經常被設計為一個組件容器。一般首先在一個面板中進行繪制,然后再將這個面板添加到框架。
4.paintComponent 方法
1)JPanel 非常適合於繪制自定義圖形
2)其圖形對象是作為 paintComponent() 方法的參數獲得的。
3)要創建自定義圖形,需要編寫擴展 JPanel 類的新類。並覆蓋父類的paintComponent() 方法:
5.Graphics對象
1)paintComponent方法包含一個Graphics類型的參數。
2)Graphics對象記錄針對繪制圖形和文本的一系列設置,比如設置的圖標或當前顏色、字體等。
3)Java中,所有繪制都必須通過一個圖形對象。
6.Graphics對象的局限性
1)可以用Graphics對象繪制的圖形是原始圖形。
2)對於這些圖形,不能使用實數坐標
3)不能繪制虛線或寬度不定的線條
4)不能使用紋理或漸變顏色填充形體
7.Graphics2D對象
為了解決圖形對象的局限性,在Java1.1以后的版本中引入了Java 2D。
1)Java2D 包括一個 Graphics2D 類,此類擴展了 Graphics 類,所有圖形方法都可以配合 Graphics2D對象使用
2)Java 2D 圖形的重要功能:
A.顏色和圖案:圖形可以用漸變顏色和填充圖案着色。
B.透明繪制:圖形的不透明度通過 α 透明值控制。
C.本地字體:平台上的所有本地字體都可用於繪制文本。
D.畫筆的顯式控制:可以使用線條的粗細、虛線圖案以及段連接樣式。
E.坐標系的轉換:可以使用平移、縮放、旋轉和剪切
8.基本的繪圖方法
每個 AWT 組件定義一種傳遞 Graphics 對象的 paint
方法,繪制便是在該對象上執行。
public void paint(Graphics g) {
g.setColor(someColor); // 設置顏色
g.setFont(someLimitedFont); //設置字體
g.drawString(...);//繪制字符串
g.drawLine(...); //畫線
g.drawRect(...); // 繪制圖形輪廓
g.fillRect(...); // 繪制填充圖形
g.drawPolygon(...); //繪制圖形輪廓
g.fillPolygon(...); //繪制圖形輪廓
...
}
9.Java 2D 中的基本繪圖方法
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D)g;//強制轉換為Graphics2D
g2d.setPaint(fillColorOrPattern);
g2d.setStroke(penThicknessOrPattern);
g2d.setComposite(someAlphaComposite);
g2d.setFont(anyFont);
g2d.setColor(anyColor);
g2d.translate(...);
g2d.rotate(...);
g2d.scale(...);
g2d.shear(...);
g2d.setTransform(someAffineTransform);
SomeShape s = new SomeShape(...);
g2d.draw(s); // 繪制圖形輪廓
g2d.fill(s); // 繪制填充圖形
}
10.Font 類
1)Font 類只有一個構造函數:
public Font(String name, int style, int pointsize)
– 參數name表示字體的名稱。
– 參數style表示樣式可以是Font.PLAIN、 Font.BOLD 或 Font.ITALIC
– 參數pointsize表示字體的點數,即以磅為單位的字體大小,可以是 11、12、14、16 等。
11.列出當前平台上所有可用字體
import java.awt.*;
public class ListFonts {
public static void main(String[] args) {
GraphicsEnvironment env = GraphicsEnvironment
.getLocalGraphicsEnvironment();
String[] fontNames = env.getAvailableFontFamilyNames();
System.out.println("可用字體:");
for (int i = 0; i < fontNames.length; i++)
System.out.println(" " + fontNames[i]);
}
}
12.顏色
1)java.awt.Color 類提供了13個可用作標准顏色的常量:
black(黑色) green(綠色)
red(紅色) blue(藍色)
lightGray(淺灰色) white(白色)
cyan(藍綠色) magenta(洋紅色)
yellow(黃色) darkGray(深灰色)
orange(橙色) gray(灰色)
pink(粉紅色)
2)Color類的構造函數
Color(int red,int green,int blue):使用三個分別代表紅、綠、藍的整數來表示它們混合的顏色。這些值必須在0到255之間。
Color(float red,float green,float blue):用三個浮點數指定紅、綠、藍的相對混合。
3)設置顏色方法
如果要修改或設置組件的顏色,可以使用下列幾種方法:
void setColor(Color newColor):設置當前繪制的顏色
void setForeground(Color):設置前景色
void setBackground(Color):設置背景色
import java.awt.*;
import javax.swing.*;
class ColorsPanel extends JPanel {
public void paintComponent(Graphics g) {
Font f = new Font("Georgia", Font.ITALIC, 16);
g.setFont(f);
g.setColor(Color.red);
g.drawString("Hello", 75, 100);
g.setColor(new Color(0, 128, 128));
g.drawString("World", 75, 125);
}
}
13.繪制圖形
1)在 Java 2D 中,通常先創建 Shape 對象,然后調用 Graphics2D 對象的 draw 或 fill 方法。
2)Java 2D 庫以面向對象的方式組合幾何形體。
3)java.awt.geom包中囊括了一些有用的Shape實現。如:
A.Line2D (線)
B.Rectangle2D(矩形)
C.Ellipse2D (橢圓)
4)java.awt.Graphics中提供了一些方法用來繪制圖形對象中的直線和多邊形。方法如下:
void drawLine(int startX,int startY,int entX,int endY):繪制一條直線
void drawPolygon(int x[],int y[],int numpoints):繪制多邊形輪廓
void fillPolygon(int x[],int y[],int numpoints):繪制填充多邊形
void drawPolyline (int x[],int y[],int numpoints):繪制順序連線,如果第一個點和最后一個點不同,該圖形不封閉
5)繪制矩形和橢圓
void drawRect(int top, int left, int width, int height):繪制矩形邊框
void fillRect(int top, int left,int width, int height) :繪制填充矩形
void drawOval(int top, int left, int width, int height):繪制橢圓邊框
void fillOval(int top, int left,int width, int height) :繪制填充橢圓
6)Toolkit 對象
要獲得 Toolkit 對象,可以使用 Toolkit 類的靜態 getDefaultToolkit 方法。
Toolkit getDefaultToolkit() :返回缺省工具包。
Image getImage(String filename) :返回一個將從文件中讀取其像素數據的圖像。參數filename包含圖像文件(例如,GIF 或 JPEG 文件)
boolean drawImage(Image img, int x, int y, ImageObserver ob) : 繪制比例圖像。
7)顯示圖像文件的實例
A.以下提供了從當前目錄獲取本地圖像文件的代碼(如果圖像文件不在當前目錄中,必須提供完整的路徑名):
String name="xyz.gif";
Image img=Toolkit.getDefaultToolkit().getImage(name);
B.要從網絡中獲得圖像文件,必須提供 URL,例如:
URL u=new URL(http://www.xyz.com/image.gif);
Image img= Toolkit.getDefaultToolkit().getImage(u) ;

