
Chapter 11 GUI Programming
?
1. 導(dǎo)入靜態(tài)常量 (JDK 1.5 Feature)
import static java.awt.BorderLayout.*;
這樣就可以直接使用EAST代替java.awt.BorderLayout.EAST
?
2. Layout Manager 屬性
setHGap(int), setVGap(int):設(shè)定控間間的水平和垂直距離
setAlignment(int):設(shè)置對(duì)齊方式(FlowLayout.LEFT/RIGHT/CENTER/LEADING/TRAILING)
setRows(int), setColumns
?
3. 重新布局
一個(gè)container每次只能有一個(gè)layout manager,但是可以通過(guò)setLayout(aNewLayout)方法設(shè)置新的layout manager,并使用 validate() 方法強(qiáng)制container重新對(duì)控間布局。
如果layout manager沒(méi)有變,只是修改了它的屬性,那么可以使用 doLayout() 方法強(qiáng)制container重新布局。
?
4. java.awt.Color 類
publc Color(int r, int g, int b);
修改控間前景:java.awt.Component.setForeground(Color c)
修改控間背景:java.awt.Component.setBacground(Color c)
Color 類中預(yù)先定義了black, blue, cyan, darkGray, gray, green, lightGray, magenta, orange, pink, red, white, yellow 13種顏色供直接使用,如jbtOK.setForeground(Color.red);
但是由于這些常量的名稱有悖于命名慣例,JDK 1.4 以后可以使用新的常量BLACK, BLUE, DARK_GRAY, …。
?
5. java.awt.Font 類
public Font(String name, int style, int Size);
name:字體名,如”Serif”
style:Font.PLAIN, Font.BOLD, Font.ITALIC, Font.BOLD+Font.ITALIC
可以使用java.awt.GraphicsEnvironment.getAvailableFontFamilyNames()獲取系統(tǒng)包含的字體。
import java.awt.*;
?
public class GetFonts {
public static void main(String[] args) {
GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();
String[] fontnames = e.getAvailableFontFamilyNames();
?
for (int i = 0; i > fontnames.length; i++) {
System.out.println(fontnames[i]);
}
}
}
?
6. java.awt.Panel 類
Panel 可以作為子容器分組不同的控件。Swing中相對(duì)應(yīng)的是javax.swing.JPanel。
public JPanel()
public JPanel(LayoutManager)
舉例:
JPanel p = new JPanel();
p.add(new JButton(“OK”));
f.getContentPane().add(p);
?
7. 在Panel上作圖
通常的方法是創(chuàng)建一個(gè)新的JPanel子類,并重載paintComponent方法。
prototect void paintComponent(Graphics g)
Graphic類是一個(gè)抽象類,提供了在不同平臺(tái)上獨(dú)立于硬件的顯示圖形的接口。每個(gè)組件顯示的時(shí)候,都有一個(gè)Graphics對(duì)象為它創(chuàng)建。
重載paintComponent時(shí)先要調(diào)用父類的paintComponent清理作圖區(qū)域。
重繪方法 repaint()
?
8. Java坐標(biāo)系
左上角的點(diǎn)為(0, 0) 而傳統(tǒng)坐標(biāo)系則是以屏幕中心為(0, 0)
?
9. 作圖方法(Graphics.)
drawLines(int, int, int, int); 作直線
?
drawRect(int x, int y, int width, int height); 作空心矩形
fillRect(int, int, int, int); 作實(shí)心矩形
?
drawRoundRect(int, int, int, int, int aw, int ah); 作空心圓角矩形
fillRoundRect(int, int, int, int, int aw, int ah); 作實(shí)心圓角矩形
aw:圓角水平軸長(zhǎng) ah:圓角垂直軸長(zhǎng)
?
draw3DRect(int, int, int, int, boolean raised);
raised:凸或凹
?
drawOval(int, int, int, int);
fillOval(int, int, int, int);
作橢圓
?
drawArc(int, int, int, int, int startAngel, int arcAngel);
fillArc(int, int, int, int, int startAngel, int arcAngel);
作橢圓中的部分弧,角度制。
?
Polygon 類作多邊形用
public Polygon()
public Polygon(int[] xpoints, int[] ypoints, int npoints)
方法:
addPoint(int x, int y)
Graphics.drawPolygon(int[] xpoints, int[] ypoints, int npoints)
Graphics.fillPolygon(int[] xpoints, int[] ypoints, int npoints)
?