Gv: Văn Thiên Hoàng 5/40Object BorderLayoutCardLayoutCheckboxGroupColor DimensionEvent FontFlowLayoutFontMetricsGraphicsGridBagLayoutGridLayout ImageInsets PointPolygonRectangleToolkitMe
Trang 1Lập Trình Giao Điện Đồ Hoạ
Trang 3Gv: Văn Thiên Hoàng 3/40
1 Giới thiệu
• Java cung cấp hai gói hỗ trợ cho lập trình giao diện đồ
hoạ là: java.awt và javax.swing.
• AWT (Abstract Window Toolkit) là bộ công cụ lập trình
giao diện đồ hoạ trên Windows.
• SWING là mô hình phát triển của AWT theo xu hướng
độc lập với hệ thống.
Trang 42 Cấu trúc AWT
• AWT bao gồm nhiều class, giao diện, gói cho
phép kế thừa, từ đó lập trình viên có thể tạo ra nhiều loại control (thành phần giao diện) đa
dạng theo ý mình.
Trang 5Gv: Văn Thiên Hoàng 5/40
Object
BorderLayoutCardLayoutCheckboxGroupColor
DimensionEvent
FontFlowLayoutFontMetricsGraphicsGridBagLayoutGridLayout
ImageInsets
PointPolygonRectangleToolkitMenuComponent
ButtonCanvasCheckbox
ChoiceContainer
ScrollBar
LabelList
Panel
WindowScrollPane
Applet
DialogFrame
TextComponent
TextFieldTextArea
MenuBarMenuItem Menu
PopupMenuCheckboxMenuItem
AWTExceptionAWTError
ExceptionError
Trang 63 Lớp Component
• Lớp Component là lớp trừu tượng cơ sở của tất cả các
thành phần AWT.
• Component cung cấp các chức năng để xử lý các sự
kiện, thay đổi kích thước các thành phần, điều khiển font, màu và vẽ lên thành phần.
• Một số phương thức:
• Void setSize(int width, int height) : đặt kích thước cho
các thành phần.
Trang 7Gv: Văn Thiên Hoàng 7/40
• Void setFont(Font f): đặt lại font cho thành phần.
• Void setEnable(boolean b): quy định thành phần có hiện
thị trên màn hình hay không.
Trang 8BorderLayoutCardLayoutCheckboxGroupColor
DimensionEvent
FontFlowLayoutFontMetricsGraphicsGridBagLayoutGridLayout
ImageInsetsMenuComponent
ButtonCanvasCheckbox
ChoiceContainer
ScrollBar
LabelList
Panel
WindowScrollPane
Applet
DialogFrame
TextComponent
TextFieldTextArea
MenuBarMenuItem CheckboxMenuItem
Trang 9Gv: Văn Thiên Hoàng 9/40
4 Lớp Container
• Lớp Container: kế thừa từ lớp Component, là lớp chứa
các thành phần khác để xây dựng những giao diện phức tạp.
• Phương thức của lớp Container kế thừa từ lớp
Component, bổ sung thêm phương thức:
• Void add(Component c): thêm một thành phần vào
Container.
Trang 104 Lớp Container
• Các lớp con của lớp Container:
• Lớp Panel: là một thành phần chứa kế thừa từ
Container.
• Lớp Window: kế thừa từ lớp Container, đai diện
cho một cửa sổ nhưng không có tiêu đề, menu.
• ScrollPane: là tạo cửa sổ cuộn.
Trang 11Gv: Văn Thiên Hoàng 11/40
Object
BorderLayoutCardLayoutCheckboxGroupColor
DimensionEvent
FontFlowLayoutFontMetricsGraphicsGridBagLayoutGridLayout
ImageInsets
PointPolygonRectangleToolkitMenuComponent
ButtonCanvasCheckbox
ChoiceContainer
ScrollBar
LabelList
Panel
WindowScrollPane
Applet
DialogFrame
TextComponent
TextFieldTextArea
MenuBarMenuItem Menu
PopupMenuCheckboxMenuItem
AWTExceptionAWTError
ExceptionError
Trang 124.1 Lớp Frame
• Lớp Frame: kế thừa từ lớp Window, là lớp dùng để tạo
cửa sổ trong đó chứa thanh tiêu đề, menu và các đường viền.
• Layout Manager mặc định là: BorderLayout.
• Phương thức khởi tạo:
• Frame(): tạo một cửa sổ với tiêu đề trống.
• Frame(String title): tạo một cửa sổ với tiêu đề title.
Trang 13Gv: Văn Thiên Hoàng 13/40
4.1 Lớp Frame
• Ví dụ: Tạo ra cửa sổ có kích thước 200,
200
Trang 144.1 Lớp Frame
Trang 15Gv: Văn Thiên Hoàng 15/40
4.1 Lớp Frame
• Ví dụ: Tạo ra cửa sổ riêng có phương
phước khởi tạo có tên và kích thước.
Trang 164.1 Lớp Frame
Trang 17Gv: Văn Thiên Hoàng 17/40
Object
BorderLayoutCardLayoutCheckboxGroupColor
DimensionEvent
FontFlowLayoutFontMetricsGraphicsGridBagLayoutGridLayout
ImageInsets
PointPolygonRectangleToolkitMenuComponent
ButtonCanvasCheckbox
ChoiceContainer
ScrollBar
LabelList
Panel
WindowScrollPane
Applet
DialogFrame
TextComponent
TextFieldTextArea
MenuBarMenuItem Menu
PopupMenuCheckboxMenuItem
AWTExceptionAWTError
ExceptionError
Trang 184.2 Lớp Dialog
• Dialog là lớp con lớp window, không có menu
và không cho phép phóng to/thu nhỏ hoặc thay đổi kích thước bằng mouse.
• Có hai trạng thái:
– Là modaless (mặc định)
– Hoặc modal (Khi được hiển thị, một modal Dialog
sẽ "khóa" hết các cửa sổ khác của ứng dụng cho đến khi Dialog đó được đóng.
Trang 19Gv: Văn Thiên Hoàng 19/40
4.2 Lớp Dialog
Ví dụ: Hiển thị dialog dạng modal
Trang 204.2 Lớp Dialog
Ví dụ: Hiển thị dialog dạng modal
Trang 21Gv: Văn Thiên Hoàng 21/40
Object
BorderLayoutCardLayoutCheckboxGroupColor
DimensionEvent
FontFlowLayoutFontMetricsGraphicsGridBagLayoutGridLayout
ImageInsets
PointPolygonRectangleToolkitMenuComponent
ButtonCanvasCheckbox
ChoiceContainer
ScrollBar
LabelList
Panel
WindowScrollPane
Applet
DialogFrame
TextComponent
TextFieldTextArea
MenuBarMenuItem Menu
PopupMenuCheckboxMenuItem
AWTExceptionAWTError
ExceptionError
Trang 224.3 Lớp Panel
• Panel là container không thể tồn tại độc
lập mà phải thuộc về một container nào
đó
• Panel là một vùng hình chữ nhật để chứa
các control, và buộc phải nằm trên một Window, hay một cửa sổ trình duyệt web hay một Panel khác
Trang 23Gv: Văn Thiên Hoàng 23/40
4.3 Lớp Panel
Frame
Panel
sub-panels
Trang 244.3 Lớp Panel
• Layout Manager mặc định là FlowLayout
• Tạo Panel
– Panel panel = new Panel();
• Thêm các Components vào Panel
– panel.add(someComponent);
– panel.add(someOtherComponent);
–
• Chú ý: Kích thước Panel được xác định bởi các
thành phần bên trong Panel.
Trang 25Gv: Văn Thiên Hoàng 25/40
4.3 Lớp Panel
• Ví dụ: Hiển thị bốn button trên Panel.
Trang 264.3 Lớp Panel
Trang 27Gv: Văn Thiên Hoàng 27/40
Object
BorderLayoutCardLayoutCheckboxGroupColor
DimensionEvent
FontFlowLayoutFontMetricsGraphicsGridBagLayoutGridLayout
ImageInsets
PointPolygonRectangleToolkitMenuComponent
ButtonCanvasCheckbox
ChoiceContainer
ScrollBar
LabelList
Panel
WindowScrollPane
Applet
DialogFrame
TextComponent
TextFieldTextArea
MenuBarMenuItem Menu
PopupMenuCheckboxMenuItem
AWTExceptionAWTError
ExceptionError
Trang 28– Canvas canvas = new Canvas();
– SpecializedCanvas canvas = new SpecializedCanvas();
Trang 29Gv: Văn Thiên Hoàng 29/40
4.4 Lớp Canvas
• Ví dụ: Tạo một lớp kết thừa lớp Canvas để vẽ
hình tròn
Trang 304.4 Lớp Canvas
• Ví dụ: Tạo một lớp kết thừa lớp Canvas để vẽ
hình tròn
Trang 31Gv: Văn Thiên Hoàng 31/40
4.4 Lớp Canvas
Trang 324.4 Lớp Canvas
Trang 33Gv: Văn Thiên Hoàng 33/40
4 Một số thành phần cơ bản
Trang 34BorderLayoutCardLayoutCheckboxGroupColor
DimensionEvent
FontFlowLayoutFontMetricsGraphicsGridBagLayoutGridLayout
ImageInsetsMenuComponent
ButtonCanvasCheckbox
ChoiceContainer
ScrollBar
LabelList
Panel
WindowScrollPane
Applet
DialogFrame
TextComponent
TextFieldTextArea
MenuBarMenuItem CheckboxMenuItem
Trang 35Gv: Văn Thiên Hoàng 35/40
Lớp Font & Color
• Lớp Font dùng để tạo chữ cho các thành phần
• Phương thức khởi tạo:
– Font(String tenFont, int kieu, int co);
Trang 37Gv: Văn Thiên Hoàng 37/40
Lớp Label
• Dùng để tạo các nhãn trên cửa sổ.
• Phương thức khởi tạo:
– Label(): tạo nhãn trống.
– Label(String text): tạo nhãn chứa nội dung.
• Một số phương thức thường dùng:
– String getText(): trả về nội dung của nhãn.
– Void setText(String text): đặt nội dung vào nhãn.
Trang 38Lớp Label
• Ví dụ: Chương trình hiển thị dòng chữ “chao Java –
AWT” trên màn hình đồ hoạ.
Trang 39Gv: Văn Thiên Hoàng 39/40
Lớp Label
Trang 40BorderLayoutCardLayoutCheckboxGroupColor
DimensionEvent
FontFlowLayoutFontMetricsGraphicsGridBagLayoutGridLayout
ImageInsetsMenuComponent
ButtonCanvasCheckbox
ChoiceContainer
ScrollBar
LabelList
Panel
WindowScrollPane
Applet
DialogFrame
TextComponent
TextFieldTextArea
MenuBarMenuItem CheckboxMenuItem
Trang 41Gv: Văn Thiên Hoàng 41/40
Lớp TextField
• Lớp TextField: dùng để tạo các ô nhập dữ liệu.
• Phương thức khởi tạo:
– TextField(): tạo một TextField trống.
– TextField(String text):tạo một TextField chứa nội
dung text.
– TextField(int n): tạo TextField hiển thị được n kí tự.
Trang 42Lớp TextField
• Các phương thức thường dùng:
– String getText();
– Void setText(String);
Trang 43Gv: Văn Thiên Hoàng 43/40
Lớp TextField
• Ví dụ: Chương trình minh hoạ nhập dữ liệu đơn giản.
Trang 44Lớp TextField
Trang 45Gv: Văn Thiên Hoàng 45/40
Object
BorderLayoutCardLayoutCheckboxGroupColor
DimensionEvent
FontFlowLayoutFontMetricsGraphicsGridBagLayoutGridLayout
ImageInsets
PointPolygonRectangleToolkitMenuComponent
ButtonCanvasCheckbox
ChoiceContainer
ScrollBar
LabelList
Panel
WindowScrollPane
Applet
DialogFrame
TextComponent
TextFieldTextArea
MenuBarMenuItem Menu
PopupMenuCheckboxMenuItem
AWTExceptionAWTError
ExceptionError
Trang 47Gv: Văn Thiên Hoàng 47/40
Lớp TextArea
• Các phương thức thường dùng:
– String getText()
– Void setText(String text)
– Void append(String text): thêm dòng text vào
cuối TextArea.
Trang 49Gv: Văn Thiên Hoàng 49/40
Lớp Checkbox
• Dùng để tạo các hộ kiểm tra
• Phương thức khởi tạo
Trang 50– CheckboxGroup cbg = new CheckboxGroup();
– CheckBox chk1 = new Checkbox(“Mau do”,cbg,true);
Trang 51Gv: Văn Thiên Hoàng 51/40
Lớp Checkbox
Trang 52Lớp Checkbox
Trang 53Gv: Văn Thiên Hoàng 53/40
Lớp Choice
• Dùng để tạo các mục chọn kéo xuống.
• Phương thức khởi tạo:
– Choice()
Trang 55Gv: Văn Thiên Hoàng 55/40
Lớp List
• Lớp List: dùng để tạo danh sách các mục chọn.
• Phương thức khởi tạo:
Trang 57Gv: Văn Thiên Hoàng 57/40
Lớp List
• Ví dụ: tạo List chọn môn học
– List lst = new List();
– Lst.addItem(“Pascal”);
– Lst.addItem(“Java”);
– Lst.addItem(“Access”);
– Lst.addItem(“VisualBasic”);
Trang 58– Lớp FlowLayout: trình bày theo thứ tự từ trái sang
phải, từ trên xuống.
– Lớp BorderLayout: trình bày các thành phần trong 5
Trang 59Gv: Văn Thiên Hoàng 59/40
5 Trình bày các thành phần
• Là Layout mặc định của Panel, JPanel, và Applet
• Tự động thay đổi kích thước đối tượng vừa với nội dung
• Canh giữa trên dòng
• Phương thức khởi tạo
– FlowLayout()
– FlowLayout(int alignment)
– FlowLayout(int alignment, int hGap, int vGap)
Trang 605 Trình bày các thành phần
• Ví dụ: FlowLayout
Trang 61Gv: Văn Thiên Hoàng 61/40
5 Trình bày các thành phần
• Ví dụ: FlowLayout
Trang 625 Trình bày các thành phần
• Khi trình bày bằng BorderLayout, để thêm một thành
phần vào lớp chứa dùng phương thức:
Trang 63Gv: Văn Thiên Hoàng 63/40
5 Trình bày các thành phần
Trang 645 Trình bày các thành phần
Trang 65Gv: Văn Thiên Hoàng 65/40
Trình bày các thành phần
• Lớp GridLayout: Sắp xếp các thành phần vào
một ô lưới nhiều dòng, cột.
• Phương thức khởi tạo
– GridLayout(int rows,int columns)
• Khi thêm các thành phần vào lớp chứa trình bày
bằng GridLayout sẽ thêm lần lượt vào từng ô từ trái qua, từ trên xuống.
Trang 66Trình bày các thành phần
• Ví dụ
Trang 67Gv: Văn Thiên Hoàng 67/40
Trình bày các thành phần
Trang 68Trình bày các thành phần
• Trình bày tự do (Null layout): cho phép
trình các đối tượng tùy ý theo toạ độ
– Gọi phương thức: setLayout(null)
• Xác định vị trí và kích thước của thành
phần:
– setBounds(int left, int top, int width, int height)
Trang 69Gv: Văn Thiên Hoàng 69/40
Trình bày các thành phần
Trang 70Trình bày các thành phần
Trang 71Gv: Văn Thiên Hoàng 71/40
Các Container lồng nhau
Trang 72Các Container lồng nhau
Trang 73Gv: Văn Thiên Hoàng 73/40
Các Container lồng nhau
Trang 74GridBagLayout
Trang 75Gv: Văn Thiên Hoàng 75/40
Bài tập
• Viết chương trình thiết kế trò chơi Mine Cho
phép chọn kích thước (số dòng, số cột) nhập vào từ JOptionPane