Khung chứa Panels

Một phần của tài liệu Chatting program (Trang 34 - 38)

Panel là một khung chứa đơn giản nhất, nó chỉ dùng để chứa và nhóm các đối tợng con khác lại với nhau. Ta có thể tạo ra các khung chứa Panel

nh sau:

Panel myPanel = new Panel ( )

Nh đã nêu, lớp Applet chính là một đối tợng khung chứa đợc dẫn xuất từ lớp Panel này và nh ta cũng đã biết một khung chứa có thể chứa cả các khung khác, chính và vậy ta có thể đa khung chứa myPanel vừa tạo vào Applet cũng tơng tự nh ta đã làm với các đối tợng khác:

add (myPanel)

Mặt khác ta cũng có thể tạo những khung chứa lồng vào nhau với bao nhiêu cũng đợc. Ví dụ sau sẽ lồng 4 khung chứa vào nhau:

Panel main Panel, subPanel1, subPanel2, subPanel3; mainPanel = new Panel ( );

subPanel1 = new Panel ( ); subPanel2 = new Panel ( ); subPanel3 = new Panel ( );

//Lồng khung chứa subPanel1, subPanel2 vào khung chứa mainPanel

mainPanel . add (subPanel1); mainPanel . add (subPanel2);

//Lồng khung chứa subPanel3 vào khung chứa subPanel1

subPanel1.add(subPanel3);

Bây giờ chuyển sang một khung chứa có tính năng toàn diện hơn là khung chứa Frame

2.11.Frames

Khung chứa Frame đợc dùng để làm gì ?

Khung chứa Frame là một trong những thành phần mạnh mẽ nhất của th viện AWT. Nó giúp ta tạo ra một cửa sổ hẳn hoi nh các ứng dụng thông thờng của Windows mà bạn vẫn thờng thấy. Nếu xem xét kỹ lại các ứng

dụng trên Windows ta sẽ thấy mỗi chơng trình chẳng qua chỉ là một cửa sổ, trong mỗi cửa sổ lại chứa những đối tợng con khác nh các loại nút nhấn, hình ảnh, văn bản...Một cửa sổ nh vậy đợc Java thể hiện qua khung chứa Frame. Các ứng dụng Window độc lập (Standard alone) đợc thiết kế bằng ngôn ngữ Java thờng lấy đối tợng Frame này làm nền. Đối với Applet ta có thể dùng đối tợng Frame để tạo nên những chơng trình chạy bên ngoài trang WEB của trình duyệt (browser), không phải ràng buộc hạn hẹp trong một phạm vi nhỏ bé của Applet.

Tạo đối tợng khung chứa Frame

Tạo đối tợng Frame cũng đơn giản nh ta đã tạo đối tợng Panel. Hãy sử dụng lớp Frame và gọi phơgn thức khởi dựng của nó:

public Frame ( )

ví dụ Frame myWindow = new Frame ( )

Do khung chứa Frame là một cửa sổ hẳn hoi nên ta có thể dùng phơng thức sau để tạo ra cửa sổ với tiêu đề bên trên:

public Frame (String FrameTitle)

ví dụ Frame myWindow = new Frame( “Java application”);

2.12.Các đặc điểm của khung chứa Frame

Sau khi đã tạo đợc đối tợng Frame, muốn nó hiện hữu trên màn hình ta cần trải qua một số bớc kế tiếp sau:

 Định lại kích thớc cho cửa sổ (Frame là một khung chứa nhng vì thể hiện của nó nh là một cửa sổ Windows nên ta gọi là cửa sổ cho tiện) bằng phợng thức myWindows.resize(300,100) hoặc myWindows.setSize (new Dimension(300,100))

 Đa cửa sổ hiện ra màn hình: myWindow.show( ). Ta có thể tạm thời dấu cởa sổ Frame đi bằng phơng thức:

myWindow.hide( ). Nên nhớ rằng cửa sổ chỉ bị tạm ẩn đi thôi (invisible), tuy ta không thấy nhng nó vẫn còn tồn tại, nếu phơng thức show ( ) đợc gọi thì cửa sổ sẽ hiện ra trở lại. Mọi tài nguyên mà đối tợng nắm giữ vẫn còn đó không bị mất đi. Muốn loại bỏ toàn bộ đối tợng Frame ta gọi phơng thức:

public synchronized void dispose ( )

Để thay đổi tiêu đề cho cửa sổ ta gọi phơng thức:

public void setTitle (String newTitle)

Ngợc lại muốn lấy tiêu đề của cửa sổ ta gọi phơng thức:

public String getTitle ( )

public void setCursor (int curType)

curType sẽ mang một trong các hằng số sau: Frame.DEFAULT_CURSOR Frame.CROSSHAIR_CURSOR Frame.TEXT_CURSOR Frame.WAIT_CURSOR Frame.HAND_CURSOR Frame.MOVE_CURSOR Frame.N_RESIZE_CURSOR Frame.NE_RESIZE_CURSOR Frame.E_RESIZE_CURSOR Frame.SE_RESIZE_CURSOR Frame.S_RESIZE_CURSOR Frame.SW_RESIZE_CURSOR Frame.W_RESIZE_CURSOR Frame.NW_RESIZE_CURSOR

Để biết đợc hình dạng hiện tại của con trỏ chuột ta gọi phơng thức:

public int getCursorType ( )

Cửa sổ có thể đợc co giãn và thay đổi kích thớc. Nếu nh ta không muốn điều đó hãy áp dụng phơng thức:

public void setResizable (boolean allowResize)

allowResize = true thì cửa sổ có thể thay đổi kích thớc còn false thì không. Phơng thức sau sẽ giúp ta xác định cửa sổ đang ở tình trạng nào:

public boolean isResizable ( )

Mỗi cửa sổ có thể có một biểu tợng nhỏ (bên góc bên trái) ta có thể thay đổi hình ảnh này bằng phơng thức:

public setIconImage (Image image)

2.13.Sử dụng cửa sổ để tạo một ứng dụng Windows độc lập

Hãy nhớ lại các phần trớc. Một chơng trình độc lập khác với một Applet ở chỗ nó có một phơng thức main( ). Còn Applet thì sao? bản thân Applet chỉ là một khung chứa Panel bình thờng mà ta có thể đa các đối t- ợng con vào đó. Vậy tại sao không đa nguyên cả Applet vào khung chứa Frame? Ta hoàn toàn có thể làm đợc điều này và khi đó sẽ có một chơng trình ứng dụng Windows độc lập hẳn hoi.

2.14.Gắn đối t ợng trình đơn menu vào cửa sổ ứng dụng

Thành phần đối tợng Java

Thanh trình đơn (menu bar) MenuBar Trình đơn đổ xuống (popup menu) Menu Các mục chọn (menu item) MenuItem Trình đơn con (sub popup menu) Menu

Dùng đối tợng MenuBar ta có thể tạo một thanh trình đơn (menu bar) và gắn nó vào cửa sổ ứng dụng (Frame) theo cách sau:

Tạo thanh trình đơn

MenuBar myMenubar = new MenuBar ( ); Gắn thanh trình đơn vừa tạo vào cửa sổ myWindow.setMenuBar (myMenuBar);

Khi ta đã có thanh trình đơn ngang menubar, ta sẽ dùng đối tợng menu để tạo ra các trình đơn (menu) con gắn vào đó nh sau:

Menu FileMenu = new Menu(“File”); //tạo menu con myMenubar.add(FileMenu); // Gắn vào menu bar

Sau khi đã có menu con ta cần phải gắn các mục chọn (item) vào đó, một menu mà không có mục chọn nào cả thì thật vô nghĩa, đối tợng MenuItem sẽ giúp ta thực hiện điều đó. Chẳng hạn với ta muốn đa mục chọn “Open” vào menu thì có thể thực hiện theo hai cách:

Đa trực tiếp mục chọn vào menu

FileMenu. add(new MenuItem(“Open”)); Tạo riêng mục chọn rồi mới đa vào

MenuItem openItem = new MenuItem(“Open”); FileMenu. add(openItem);

Mỗi mục chọn có thể ở trạng thái đợc chọn (enabled) hay không cho phép chọn (disabled) khi mục chọn ở trạng thái disabled nó sẽ mờ, ta không thể chọn đợc nó. Ví dụ để đối tợng mục chọn openItem vừa tạo có khả năng cho phép chọn hay không đợc chọn thì ta sử dụng hai phơng thức sau:

openItem.enable( ) openItem.disable( )

Khi một trình đơn có nhiều mục chọn ta có thể dùng một đờng phân cách (seperator) để tách các mục chọn ra (nhằm phân theo nhóm). Muốn tạo đờng phân cách hãy gọi phơng thức addSeperator của đối tợng Menu. Ví dụ:

Để tạo một mục chọn có chứa các menu con khác (sub menu) đơn giản ta chỉ tạo một menu bình thờng rồi đa nó vào menu đã có.

Ta cũng có thể tạo một mục chọn có khả năng đánh dấu (checked Item, một dấu kiểm tra (check mark) sẽ hiện diện bên trái và sẽ tự động bật/tắt khi ta chọn mục chọn đó.

Một mục chọn có khả năng đánh dấu đợc tạo ra từ lớp CheckboxMenuItem nh sau:

CheckboxMenuItem Autosave = new CheckboxMenuItem (“Autosave”);

FileMenu.add(Autosave);

Để xác định xem mục chọn save đang ở trong trạng thái nào ta sử dụng phơng thức getState ( ). Ví dụ: Autosave. GetState ( ) trị trả về bằng true nếu mục chọn đang bị đánh dấu cong ngợc lại là false.

Bình thờng khi đặt các menu con vào thanh trình đơn ngang menu bar, thứ tự sẽ là từ trái sang phải, tuy nhiên nếu muốn đặt menu con sang bên gọc phải (nh menu giúp đỡ Help chẳng hạn) hãy sử dụng phơng thức:

public void setHelpMenu( Menu m);

Sử dụng trình đơn Menu

Để mỗi mục chọn tơng tác và nhận đợc tình huống khi ngời dùng chọn nó ta cần cài đặt giao tiếp ActionListener và gắn nó vào cho từng mục chọn.

Một phần của tài liệu Chatting program (Trang 34 - 38)

Tải bản đầy đủ (DOC)

(79 trang)
w