GIÁO TRÌNH

Core Java

Science and Technology

Container (Vật chứa)

Tác giả: Huỳnh Công Pháp

Container là vùng mà bạn có thể đặt các thành phần giao diện của bạn vào đó. Bất cứ vật gì mà kế thừa từ lớp Container sẽ là vật chứa. Applet là một vật chứa, applet được dẫn xuất từ Panel, lớp Panel lại được dẫn xuất từ lớp Container.

Một vật chứa có thể chứa nhiều phần tử, các phần tử này có thể được vẽ hay được tô màu tuỳ thích. Bạn hãy xem vật chứa như một cửa sổ. Như khung (frame), pane, latch, hook, và các thành phần có kích thước nhỏ hơn khác.

Gói java.awt chứa một lớp gọi là Container. Lớp này trực tiếp hay gián tiếp phái sinh ra hai vật chứa được sử dụng phổ biến nhất là Frame và Panel.

Frame và Panel là các vật chứa thường được sử dụng. Frame là cửa sổ độc lập nhưng ngược lại Panel là vùng nằm trong cửa sổ khác. Panel không có các đường biên, chúng được trình bày trong một cửa sổ do trình duyệt hay appletviewer cung cấp. Appletviewer là một công cụ được JDK hỗ trợ để xem các applet. Frame là lớp con của Window. Chúng được trình bày trong một cửa sổ độc lập, cửa sổ này có chứa các đường biên xung quanh.

Frame

Frame không phụ thuộc vào applet và trình duyệt. Frame có thể hoạt động như một vật chứa hay như một thành phần (component). Bạn có thể sử dụng một trong những constructor sau để tạo một frame:

  • Frame(): Tạo một frame nhưng không hiển thị (invisible)
  • Frame(String title): Tạo một frame không hiển thị, có tiêu đề.

Chương trình dưới đây sẽ minh hoạ cách tạo một Frame.

import java.awt.*; class FrameDemo extends Frame { public FrameDemo(String title) { super(title); } public static void main(String args[]) { FrameDemo f=new FrameDemo("I have been Frameed!!!"); f.setSize(300,200); f.setVisible(true); } }

Lớp được định nghĩa Framedemo là một lớp con của lớp Frame. Lớp FrameDemo này có một phương thức khởi tạo, trong phương thức khởi tạo này ta cho gọi phương thức super(). Nó sẽ gọi phương thức khởi tạo của lớp cha (trong trường hợp này là Frame). Mục đích của super() là gọi phương thức khởi tạo của lớp cha. Nó sẽ tạo một đối tượng của lớp con, lớp con này sẽ tạo Frame. Tuy nhiên, Frame vẫn không nhìn thấy được và không có kích thước. Để làm được điều này, ta sử dụng hai phương thức nằm trong phương thức main: setSize()setVisible().

Kết xuất của chương trình giống như hình 1

Frame

Panel

Panel được sử dụng để nhóm một số các thành phần lại với nhau. Cách đơn giản nhất để tạo một panel là sử dụng phương thức khởi tạo của nó, hàm Panel().

Chương trình sau sẽ chỉ ra cách tạo một panel:

import java.awt.*; class Paneltest extends Panel { public static void main(String args[]) { Paneltest p=new Paneltest(); Frame f=new Frame("Testing a Panel"); f.add(p); f.setSize(300,200); f.setVisible(true); } public Paneltest() { } }

Panel không thể được nhìn thấy trực tiếp. Do đó, chúng ta cần thêm panel đến một frame. Vì vậy ta cần tạo một frame mới và thêm Panel mới được tạo này vào đó. Tuy nhiên, frame sẽ không nhìn thấy được, và không có kích thước. Chúng ta sử dụng hai phương thức trong phương thức main – setSize()setVisible() để thiết lập kích thước và hiển thị frame.

Kết xuất của chương trình:

Panel

Dialog

Lớp ‘Dialog’ tương tự như lớp Frame, nghĩa là Dialog là lớp con của lớp Window. Đối tượng dialog được tạo như sau:

Frame myframe=new Frame("My frame"); // calling frame String title = "Title"; boolean modal = true; // whether modal or not Dialog dlg=new Dialog(myframe, title, modal);

Tham số ‘modal’ chỉ ra rằng dialog sẽ ngăn chặn bất kỳ tương tác nào xảy đến với các cửa sổ được mở khác, trong khi dialog đang được hiển thị trên màn hình. Kiểu hộp thoại này ngăn chặn người dùng tương tác với các cửa sổ khác (của cùng ứng dụng) trên màn hình, cho tới khi dialog được đóng lại.