Chatbox

Các bạn vui lòng dùng từ ngữ lịch sự và có văn hóa,sử dụng Tiếng Việt có dấu chuẩn. Chúc các bạn vui vẻ!
06/04/2012 18:04 # 1
Sinhvienkhoa17
Cấp độ: 13 - Kỹ năng: 8

Kinh nghiệm: 105/130 (81%)
Kĩ năng: 55/80 (69%)
Ngày gia nhập: 18/09/2011
Bài gởi: 885
Được cảm ơn: 335
Java đồ hoạ



 
06/04/2012 18:04 # 2
Sinhvienkhoa17
Cấp độ: 13 - Kỹ năng: 8

Kinh nghiệm: 105/130 (81%)
Kĩ năng: 55/80 (69%)
Ngày gia nhập: 18/09/2011
Bài gởi: 885
Được cảm ơn: 335
Phản hồi: Java đồ hoạ


Mỗi phân` moi ngay minh post 1 bai moi nguoi coi kĩ giùm nha

Frame là một đối tượng có thể dùng một cách độc lập, hoặc được gắn vào một đối tượng khác như một đối tượng conponent bình thường. Thông thường, Frame được dùng như một cửa sổ của một chương trình độc lập.
1/- Giao diện với các đối tượng cơ bản

1.1/- Các đối tượng container cơ bản

Các đối tượng container được dùng để chứa các đối tượng thành phần khác. Các lớp đối tượng này có một số phương thức chung như sau:

♦ add(Object): Thêm một đối tượng (kiểu component) vào container.

♦ remove(Object): Loại bỏ một đối tượng ra khỏi container.

♦ removeAll(): Loại bỏ tất cả các đối tượng mà container đang chứa.

♦ getComponent(int): Trả về đối tượng thành phần có chỉ số là tham số đầu vào. Container quản lí các đối tượng chứa trong nó dưới dạng mảng. Chỉ số của các thành phần là số thứ tự khi thành phần đó được thêm vào container.

♦ getComponents(): Trả về mảng tất cả các đối tượng mà container đang chứa.

♦ countComponents(): Trả về số lượng các đối tượng mà container đang chứa.

Frame

Frame là một đối tượng có thể dùng một cách độc lập, hoặc được gắn vào một đối tượng khác như một đối tượng conponent bình thường. Thông thường, Frame được dùng như một cửa sổ của một chương trình độc lập. Các phương thức cơ bản của lớp Frame:

♦ Frame(): Khởi tạo không tham số.

♦ Frame(String): Khởi tạo với tham số là dòng tiêu đề của frame.

♦ setSize(int, int): Định kích cỡ của frame, tham số tương ứng là chiều rộng và chiều cao của frame.

♦ setVisible(boolean): Cho phép frame xuất hiện hay ẩn đi trên màn hình.

♦ setTitle(String)/getTitle(): Truy nhập thuộc tính dòng tiêu đề của frame.

♦ setResizable(boolean): Thiết lập thuộc tính cho phép thay đổi kích cỡ frame.

♦ setIconImage(Image): Thiết lập ảnh icon ở góc trên (biểu tượng) của frame. Chương trình 6.1 minh hoạ việc sử dụng một đối tượng của lớp Frame.

Chương trình 6.1




Hình 6.1: Kết quả demo Frame.

Panel

Panel cũng là một dang khung chứa, nhưng khá đơn giản. Panel chỉ dùng để nhóm các đối tượng giao diện với nhau. Thông thường, panel được dùng trong một cửa sổ của Frame hoặc một ứng dụng khác. Các phương thức cơ bản của lớp Panel, ngoài các phương thức chung của container:

♦ Panel(): Khởi tạo không tham số.

Chương trình 6.2 minh hoạ việc sử dụng một Panel trong một Frame.

Chương trình 6.2




Hình 6.2: Kết quả demo Panel.

Dialog

Dialog là một đối tượng cửa sổ con của một cửa sổ chương trình chính. Do vậy, Dialog chỉ được sử dụng kèm với một Frame. Có hai dạng Dialog:

♦ Modal: Khi hiện của sổ dialog, các cửa sổ khác của chương trình sẽ bị khoá lại, không thao tác được, chỉ thao tác được trên cửa sổ dialog.

♦ Non-modal: Không khoá các cửa sổ khác. Khi dialog xuất hiện, người dùng vẫn có thể chuyển sang thao tác trên các cửa sổ khác, nếu cần.

Các phương thức cơ bản của lớp Dialog:

♦ Dialog(Frame, boolean): Khởi tạo dialog, tham số thứ nhất là frame chứa dialog, tham số thứ hai xác định dialog có là modal hay không.

♦ Dialog(Frame, String, boolean): Khởi tạo dialog, thêm tham số thứ hai là dòng tiêu đề của dialog.

♦ setVisible(boolean): Thiết lập trạng thái hiển thị hoặc ẩn dialog trên màn hình.

♦ setSize(int, int): Định kích cỡ cho dialog, các tham số tương ứng là chiều rộng và chiều cao của dialog.

♦ setTitle(String)/getTitle(): Truy nhập thuộc tính dòng tiêu đề của dialog.

♦ setResizable(boolean): Thiết lập thuộc tính cho phép thay đổi kích cỡ của dialog.

♦ setLayout(Layout): Thiết lập chế độ hiển thị các đối tượng chứa trong dialog.

Chương trình 6.3 minh hoạ việc thêm một dialog (đang rỗng, chưa có đối tượng thành phần nào) vào một frame.

Chương trình 6.3




Hình 6.3: Kết quả demo Dialog.

1.2/- Các đối tượng component cơ bản

Các đối tượng component được dùng để làm thành phần của các đối tượng khung chứa, chúng không thể dùng độc lập, mà luôn phải gắn vào trong một đối tượng khung chứa container.

Label

Label (nhãn) là một đối tượng để hiển thị văn bản tĩnh, những văn bản mà người dùng không thể thay đổi trực tiếp được. Các phương thức cơ bản của Label:

♦ Label(): Khởi tạo một nhãn rỗng.

♦ Label(String): Khởi tạo một nhãn với nội dung văn bản là tham số đầu vào.

♦ Label(String, int): Khởi tạo một nhãn có nội dung sẵn, tham số thứ hai xác định cách căn lề của nhãn so với khung chứa, bao gồm {Label.CENTER, Label.LEFT, Label.RIGHT}.

♦ setText(String)/getText(): Truy nhập nội dung văn bản của nhãn.

♦ setAlignment(int)/getAlignment(): Truy nhập thuộc tính căn lề của nhãn.

♦ setFont(Font): Định dạng phông chữ của nhãn.

Chương trình 6.4 minh hoạ việc sử dụng nhãn trong một frame.

Chương trình 6.4




Hình 6.4: Kết quả demo Label.




 
Các thành viên đã Thank Sinhvienkhoa17 vì Bài viết có ích:
06/04/2012 18:04 # 3
Sinhvienkhoa17
Cấp độ: 13 - Kỹ năng: 8

Kinh nghiệm: 105/130 (81%)
Kĩ năng: 55/80 (69%)
Ngày gia nhập: 18/09/2011
Bài gởi: 885
Được cảm ơn: 335
Phản hồi: Java đồ hoạ


 Các bạn cố gắng làm quen với java.awt.*; với java.awt.event.*; vì coi vậy mà nó ứng dụng nhiu cái hay lém đó ..từ từ sáu đó kết hợp javax.swing.*; thì mới thấy sự thấm thúy của nó ;)) 




 
06/04/2012 18:04 # 4
Sinhvienkhoa17
Cấp độ: 13 - Kỹ năng: 8

Kinh nghiệm: 105/130 (81%)
Kĩ năng: 55/80 (69%)
Ngày gia nhập: 18/09/2011
Bài gởi: 885
Được cảm ơn: 335
Phản hồi: Java đồ hoạ


 
Lập trình giao diện trên Java – Phần 2
TextField và TextArea hai đối tượng dùng để biểu diễn văn bản và người dùng có thể thay đổi nội dung văn bản chứa trong chúng. Điểm khác biệt là TextField chỉ cho phép một dòng văn bản, trong khi TextArea cho phép chứa nhiều dòng văn bản.

TextField và TextArea

Các phương thức chung của hai lớp này:

♦ setText(String)/getText(): Truy nhập thuộc tính nội dung văn bản chứa trong ô.

♦ getSelectedText(): Trả về chuỗi văn bản được bôi đen (đánh dấu chọn) trong ô.

♦ getSelectedStart(): Trả về vị trí kí tự đầu trong vùng được đánh dấu chọn (tính từ 0).

♦ getSelectedEnd(): Trả về vị trí kí tự cuối trong vùng được đánh dấu chọn (tính từ 0).

♦ selectAll(): Đánh dấu chọn toàn văn bản.

♦ setEditable(boolean): Xác định vùng văn bản có thể edit được hay không.

Các phương thức khác của lớp TextField:

♦ TextField(): Khởi tạo một ô văn bản rỗng.

♦ TextField(int): Khởi tạo một ô văn bản rỗng, độ rộng xác định bởi tham số vào.

♦ TextField(String): Khởi tạo một ô văn bản có nội dung xác định bởi tham số đầu vào.

♦ TextField(String, int): Khởi tạo vởi nội dung có sẵn, độ rộng xác định.

 setEchoChar(char)/getEchoChar(): Truy nhập thuộc tính là kí tự thay thế văn bản trong ô. Thuộc tính này được dùng khi ta cần che dấu thông tin văn bản, ví dụ, ô gõ mật khẩu của chương trình.

♦ getColums(): Trả về độ rộng của ô văn bản.

Các phương thức khác của lớp TextArea:

 

♦ TextArea(): Khởi tạo một vùng văn bản rỗng.

 

♦ TextArea(int, int): Khởi tạo một vùng văn bản rỗng, kích cỡ (số dòng, số cột) xác định bởi tham số vào.

♦ TextArea(String): Khởi tạo một vùng văn bản có nội dung xác định bởi tham số đầu vào.

♦ TextArea(String, int, int): Khởi tạo vùng văn bản với nội dung có sẵn, độ rộng xác định.

♦ appendText(String): Thêm một đoạn văn bản vào cuối đoạn văn bản trong vùng.

♦ insertText(String, int): Chèn một đoạn văn bản vào vị trí xác định (tham số thứ hai) của vùng văn bản.

♦ replaceText(String, int, int): Thay thế một đoạn văn bản trong vùng, đánh dấu bằng vị trí bắt đầu và vị trí kết thúc (tham số thứ hai và thứ ba), bằng một đoạn văn bản mới (tham số thứ nhất).

♦ getRows()/getColums(): Trả về số dòng/cột của vùng văn bản.

Chương trình 6.5 minh hoạ việc đặt các đối tượng ô văn bản và vùng văn bản vào một frame.

Chương trình 6.5




Hình 6.5: Kết quả demo Text.

Button

Button là đối tượng nút lệnh, dùng để thực hiện một nhiệm vụ xác định. Các phương thức cơ bản của nút nhấn:

♦ Button(String): Khởi tạo nút nhấn với tên xác định trên nút.

♦ setLabel(String)/getLabel(): Truy nhập tên của nút nhấn.

Chương trình 6.6 minh hoạ việc tạo một nút nhấn trong một frame.

Chương trình 6.6




Hình 6.6: Kết quả demo Button.

Tuy nhiên, khi click vào nút nhấn này, không xảy ra điều già cả. Lí do là chúng ta chưa cài đặt việc xử lí sự kiện cho nút nhấn. Nội dung phần 6.1.3 sẽ trình bày việc xử lí sự kiện cho các đối tượng.

1.3/- Các sự kiện cơ bản của đối tượng

Mỗi đối tượng component có một số sự kiện xác định, phát sinh từ chính đối tượng đó. Java cung cấp một số lớp sự kiện cơ bản nằm trong thư gói java.awt.event:

import java.awt.event.*;

Các lớp sự kiện cơ bản của các đối tượng bao gồm:

♦ ActionEvent: Xuất hiện khi một nút bị click vào, một danh sách (list) được chọn, một menu được chọn.

♦ ComponentEvent: Xuất hiện khi một component bị thay đổi kích cỡ, vị trí, trạng thái.

♦ FocusEvent: Xuất hiện khi một component có hoặc mất focus.

♦ ItemEvent: Xuất hiện khi một menu item được chọn hoặc bỏ, khi checkbox hoặc list item được click vào.

♦ WindowEvent: Xuất hiện khi một của sổ được mở ra, kích hoạt, đóng lại hoặc thoát ra.

♦ TextEvent: Xuất hiện khi giá trị văn bản của các đối tượng TextField và TextArea bị thay đổi.

♦ MouseEvent: Xuất hiện khi chuột được click, di chuyển qua, nhấn xuống và thả ra.

♦ KeyEvent: Xuất hiện khi có đầu vào từ bàn phím.

Các giao tiếp được cài đặt để xử lí các sự kiện trên:

♦ ActionListener.

♦ ComponentListener

♦ FocusListener

♦ ItemListener

♦ WindowListener

♦ TextListener

♦ MouseListener và MouseMotionListener

♦ KeyListener

Khi cài đặt các giao tiếp này, cần cài đặt lại phương thức xử lí sự kiện:


Để xác định sự kiện phát sinh từ component nào, ta dùng phương thức getSource():


Chương trình 6.7 cài đặt một ứng dụng hoàn chỉnh, bao gồm:

♦ Hai nhãn tiêu đề cho hai ô văn bản.

♦ Hai ô văn bản, để nhập số liệu vào.

♦ Bốn nút nhấn tương ứng để thực hiện các thao tác nhân, chia, cộng, trừ các số liệu nhập từ hai ô văn bản.

♦ Thêm một nút nhấn, khi click vào sẽ thoát khỏi chương trình (chương trình kết thúc).

Chương trình 6.7




Hết phần 2





 
Các thành viên đã Thank Sinhvienkhoa17 vì Bài viết có ích:
06/04/2012 18:04 # 5
Sinhvienkhoa17
Cấp độ: 13 - Kỹ năng: 8

Kinh nghiệm: 105/130 (81%)
Kĩ năng: 55/80 (69%)
Ngày gia nhập: 18/09/2011
Bài gởi: 885
Được cảm ơn: 335
Phản hồi: Java đồ hoạ


 Do mới dời nhà nên chưa có mạng nên ko thể tung video lên để mọi người theo dõi nên mọi người cố gắng tham khảo nha ..đầy là mấy cái cơ bản để làm đồ hoa đó ha 

Lập trình giao diện trên Java – Phần 3
Checkbox và Radio button là các đối tượng dùng để đánh dấu, hoặc chọn thông tin. Sự khác biệt giữa chúng là checkbox cho phép chọn đồng thời nhiều ô cùng lúc, trong khi đó, trong mỗi nhóm radio button, chỉ cho phép chọn một thông tin.
2/- Giao diện với các đối tượng Multimedia

Nội dung phần này sẽ tập trung trình bày các đối tượng multimedia, bao gồm:

♦ Ô đánh dấu (Checkbox) và Nút chọn (Radio button).

♦ Lựa chọn (Choice).

♦ Danh sách (List).

♦ Trình đơn (Menu).

2.1/- Ô đánh dấu và nút chọn

Checkbox và Radio button là các đối tượng dùng để đánh dấu, hoặc chọn thông tin. Sự khác biệt giữa chúng là checkbox cho phép chọn đồng thời nhiều ô cùng lúc, trong khi đó, trong mỗi nhóm radio button, chỉ cho phép chọn một thông tin.

Phương thức chung của hai lớp này:

♦ setState(boolean)/getState(): Truy nhập đến trạng thái của nút. Các phương thức khởi tạo Checkbox:

♦ Checkbox(): Khởi tạo một ô đánh dấu rỗng.

♦ Checkbox(String): Khởi tạo ô đánh dấu có nhãn xác định.

♦ Checkbox(String, boolean): Khởi tạo ô đánh dấu có nhãn, có trạng thái xác định.

Các phương thức khởi tạo Radio button tương tự như Checkbox, ngoại trừ việc phải chỉ ra nhóm của các radio button:

♦ Checkbox(String, boolean, CheckboxGroup);

♦ Checkbox(String, CheckboxGroup, boolean); Xử lí sự kiện thay đổi trạng thái nút chọn:

♦ Kiểu sự kiện: ItemEvent

♦ Cài đặt giao tiếp: ItemListener

♦ Phương thức xủa lí: itemStateChange(ItemEvent)

Chương trình 6.8 minh hoạ việc dùng một nhóm radio button gồm ba nút, tương ứng với ba màu (RED, BLUE, GREEN). Khi click vào nút nào, thì màu nền sẽ đổi theo màu đó.

Chương trình 6.8






Hình 6.7: Kết quả demo Radio Button.

2.2/- Lựa chọn

Choice là đối tượng menu sổ xuống, hiển thi một danh sách các item và cho phép người dùng chọn một trong số các item đó (tương tự đối tượng dropdown list của window). Các phương thức cơ bản của lớp Choice:

♦ Choice(): Khởi tạo đối tượng choice.

♦ addItem(String): Thêm một item vào danh sách lựa chọn.

♦ remove(int): Xoá item ở vị trí thứ i trong danh sách (bắt đầu là vị trí 0).

♦ removeAll(): Xoá toàn bộ item trong danh sách chọn.

♦ select(int)/select(String): Chọn một item theo số thứ tự hoặc theo tên.

♦ getSelectedIndex(): Trả về chỉ số của item được chọn.

♦ getSelectedItem(): Trả về tên của item được chọn.

♦ getItem(int): Trả về tên của item tương ứng với số thứ tự đưa vào.

Xử lí sự kiện thay đổi trạng thái nút chọn:

♦ Kiểu sự kiện: ItemEvent

♦ Cài đặt giao tiếp: ItemListener

♦ Phương thức xủa lí: itemStateChange(ItemEvent)

Chương trình 6.9 có chức năng tương tự như chương trình 6.8: Thay đổi màu nền theo màu được chọn. Nhưng trong chương trình này, ta dùng đối tượng choice, thay vì dùng radio button.

Chương trình 6.9






Hình 6.8: Kết quả demo Choice Button.

2.3/- Danh sách

List là một danh sách hoạt động tương tự đối tượng choice. Tuy nhiên, list cho phép người dùng có thể chọn một hoặc nhiều item cùng một lúc. Các phương thức cơ bản của lớp List:

List(): Khởi tạo một danh sách rỗng, mỗi lần chỉ được chọn một item.

♦ List(int): Tương tự, nhưng có qui định số dòng được nhìn thấy.

♦ List(int, boolean): Khởi tạo một danh sách có số dòng được nhìn thấy xác định, chế độ cho phép chọn một hay nhiều item xác định bởi tham số thứ hai.

♦ add(String): Thêm một item vào danh sách.

♦ add(String, int): Chèn một item vào vị trí xác định trong danh sách. Nếu chỉ số chèn vượt ra khỏi phạm vi danh sách, item sẽ được thêm vào cuối.

♦ replaceItem(String, int): Thay thế một item ở vị trí xác định (tham số thứ hai) trong danh sách bằng một item mới (tham số thứ nhất).

♦ remove(int): Xoá item ở vị trí xác định trong danh sách.

♦ removeAll(): Xoá toàn bộ item hiện có của danh sách.

♦ getSeletedIndex(): Trả về index của item được chọn (danh sách đơn chọn).

♦ getSelectedItem(): Trả về item được chọn (danh sách đơn chọn).

♦ getSelectedIndexs(): Trả về chỉ số các item được chọn (danh sách đa chọn).

♦ getSelectedItems(): Trả về các item được chọn (danh sách đa chọn).

Xử lí sự kiện khi thay đổi item được chọn:

- Kiểu sự kiện: ItemEvent

- Cài đặt giao tiếp: ItemListener

- Phương thức xử lí: itemStateChange(ItemEvent);

Chương trình 6.10 minh hoạ việc sử dụng đối tượng list với khả năng đa chọn. Mỗi khi thay đổi item được chọn, một thông báo các màu được chọn sẽ hiện ra.

Chương trình 6.10






Hình 6.9: Kết quả demo Listbox.




 
06/04/2012 18:04 # 6
Sinhvienkhoa17
Cấp độ: 13 - Kỹ năng: 8

Kinh nghiệm: 105/130 (81%)
Kĩ năng: 55/80 (69%)
Ngày gia nhập: 18/09/2011
Bài gởi: 885
Được cảm ơn: 335
Phản hồi: Java đồ hoạ


 Do cô giáo chủ nhiệm khuyến khích việc post tài luyện lên forum để cùng ..dạng gọi là "có miếng chia miếng " nến mọi người ủng hộ nha :D mọi câu hỏi post trên này thì tui  mình cố gắng trả lời hết nha (trong khả năng ha)




 
07/04/2012 11:04 # 7
Sinhvienkhoa17
Cấp độ: 13 - Kỹ năng: 8

Kinh nghiệm: 105/130 (81%)
Kĩ năng: 55/80 (69%)
Ngày gia nhập: 18/09/2011
Bài gởi: 885
Được cảm ơn: 335
Phản hồi: Java đồ hoạ


Chương trình lớn:Câu thang máy tự kỉ ;)) (coi tham khao ha ) :D
File đính kèm Bạn phải đăng nhập mới thấy link download




 
12/04/2012 18:04 # 8
samjutom_9x
Cấp độ: 1 - Kỹ năng: 1

Kinh nghiệm: 1/10 (10%)
Kĩ năng: 0/10 (0%)
Ngày gia nhập: 12/04/2012
Bài gởi: 1
Được cảm ơn: 0
Phản hồi: Java đồ hoạ


Trích:
 Chương trình lớn :Máy tinh nhỏ nhoi :)) (coi tham khảo nà
thế  hix. Bác add từng Button 1 thế này chết ah..nhìn sợ quá đi. Dùng 1 vòng for cho mảng 2 chiều là ok mà.. (setLayout là GridLayout)



 
14/04/2012 12:04 # 9
Sinhvienkhoa17
Cấp độ: 13 - Kỹ năng: 8

Kinh nghiệm: 105/130 (81%)
Kĩ năng: 55/80 (69%)
Ngày gia nhập: 18/09/2011
Bài gởi: 885
Được cảm ơn: 335
Phản hồi: Java đồ hoạ


Trích:
Trích:
 Chương trình lớn :Máy tinh nhỏ nhoi :)) (coi tham khảo nà
thế  hix. Bác add từng Button 1 thế này chết ah..nhìn sợ quá đi. Dùng 1 vòng for cho mảng 2 chiều là ok mà.. (setLayout là GridLayout)
 đâu bạn nhiu cách viết mà do mình viết quen cái này rồi...




 
23/04/2012 17:04 # 10
Sinhvienkhoa17
Cấp độ: 13 - Kỹ năng: 8

Kinh nghiệm: 105/130 (81%)
Kĩ năng: 55/80 (69%)
Ngày gia nhập: 18/09/2011
Bài gởi: 885
Được cảm ơn: 335
Phản hồi: Java đồ hoạ


Nội dung phần này sẽ tập trung trình bày các kỹ thuật trình bày các đối tượng giao diện (conponent) trên frame theo các ý đồ thiết kế khác nhau bằng cách dùng bộ quản lí trình bày (Layout Manager).

2.4/- Trình đơn

Trình đơn (menu) được dùng trên các thanh công cụ của các cửa sổ hoặc là popup menu xuất hiện khi ta click chuột phải vào một đối tượng. Java cung cấp một số lớp trình đơn:

Menubar: Thanh trình đơn.

Menu: Trình đơn đổ xuống.

PopupMenu: Trình đơn xuất hiện khi click chuột phải.

MenuItem: Các mục chọn của trình đơn.

Menubar

Menubar là thanh công cụ dùng để chứa các trình đơn menu. Các phương thức cơ bản của lớp Menubar:

Menubar(): Khởi tạo một thanh công cụ cho trình đơn.

add(Menu): Thêm một trình đơn mune lên thanh trình đơn menubar.

Để đặt một menubar của một frame, ta gọi phương thức của frame:


Menu và PopupMenu

Trình đơn menu là đối tượng sẽ sổ xuổng khi click chuột lên đối tượng hiển thị của menu. Menu còn được gọi là menu con của một thanh trình đơn. Các phương thức cơ bản của lớp Menu:

Menu(String): Khởi tạo một menu, với tên xác định.

add(MenuItem): Thêm một item vào menu.

add(Menu): Thêm một menu con vào menu đã có, dùng khi muốn tạo menu có nhiều mức.

addSeparator(): Thêm một đường phân vùng vào menu (để nhóm các item với nhau).

Xử lí sự kiện của lớp Menu:

- Kiểu sự kiện: ActionEvent

- Giao tiếp cài đặt: ActionListener

- Phương thức xử lí: actionPerformed(ActionEvent);

MenuItem

MenuItem là đối tượng item trong các trình đơn menu. Mỗi item, khi được click vào sẽ có tác dụng như một nút lệnh. Các phương thức cơ bản của lớp MenuItem:

MenuItem(String): Khởi tạo một item.

CheckboxMenuItem(String): Khởi tạo một item có mục chọn như checkbox.

getState(): Trả về trạng thái của item. Chỉ dùng cho item có mục chọn.

enable(): Cho phép item hoạt động (là chế độ mặc định).

disable(): Không cho phép item hoạt động (làm mờ item đi).

Xử lí sự kiện của lớp MenuItem:

- Kiểu sự kiện: ActionEvent

- Giao tiếp cài đặt: ActionListener

- Phương thức xử lí: actionPerformed(ActionEvent);

Chương trình 6.11 minh hoạ việc sử dụng các loại menu:

♦ Tạo một menubar của frame.

♦ Trên menubar, tạo một menu "File". Khi click vào sẽ sổ xuống một menu với các item: New, Open, Save, Save As, Exit.

♦ Khi bấm chuột phải vào frame, sẽ sổ ra một menu popup gồm các item: Cut, Copy, Paste.

♦ Khi click chuột vào item nào trên các menu, một nhãn trong frame sẽ hiển thị tên của item vừa được chọn.

♦ Chương trình kết thúc khi click vào item Exit.

Chương trình 6.11






Hình 6.10: Kết quả demo Menu.
3/- Các kỹ thuật tạo Tables

Nội dung phần này sẽ tập trung trình bày các kỹ thuật trình bày các đối tượng giao diện (conponent) trên frame theo các ý đồ thiết kế khác nhau bằng cách dùng bộ quản lí trình bày (Layout Manager). Bao gồm các kỹ thuật sau:

♦ Cách trình bày theo dòng (Flow layout)

♦ Cách trình bày theo mảng (Grid layout)

♦ Cách trình bày theo Border (Border layout)

♦ Cách trình bày theo GridBag (GridBag layout)

♦ Cách trình bày tự do (Null layout)

3.1/- Trình bày Flow Layout

Cách trình bày Flow Layout sẽ xếp các đối tượng trên một hướng theo dòng. Nếu đối tượng mới thêm không đủ chỗ (chiều rộng) thì nó sẽ tự động thêm vào đầu dòng mới. Các phương thức:

FlowLayout(): Khởi tạo đối tượng trình bày.

FlowLayout(int): Khởi tạo đối tượng trình bày với cách căn lề xác định.

FlowLayout(int, int, int): Khởi tạo với ba tham số: Thứ nhất là cách căn lề, thứ hai là khoảng cách giữa hai dòng (chiều cao), thứ ba là khoảng cách giữa hai đối tượng (chiều ngang).

Tham số căn lề có thể nhận một trong ba giá trị:

- FlowLayout.LEFT: Căn lề trái, là giá trị mặc định.

- FlowLayout.CENTER: Căn lề giữa.

- FlowLayout.RIGHT: Căn lề phải.

Chương trình 6.12 minh hoạ cách trình bày flow layout: Tạo ra một dãy 10 nút nhấn và gắn vào một frame theo kiểu flow layout.

Chương trình 6.12



Hình 6.11: Kết quả demo Flow layout.




 
23/04/2012 17:04 # 11
Sinhvienkhoa17
Cấp độ: 13 - Kỹ năng: 8

Kinh nghiệm: 105/130 (81%)
Kĩ năng: 55/80 (69%)
Ngày gia nhập: 18/09/2011
Bài gởi: 885
Được cảm ơn: 335
Phản hồi: Java đồ hoạ


Cách trình bày GridBag Layout cũng trình bày các đối tượng tương tự như Grid Layout: Các đối tượng sẽ được định vị theo vị trí các ô (cell) của một khung lưới (grid). Tuy nhiên, GridBag cho phép ta định kích thước của đối tượng sẽ chiếm bao nhiêu ô và sẽ được đặt ở vị trí nào trong khung lưới.

3.2/- Trình bày Grid Layout

Cách trình bày Grid Layout sẽ sắp xếp các đối tượng theo dạng bảng, được xác định số hàng và số cột. Phương thức cơ bản:

GridLayout(int, int): Khởi tạo một đối tượng trình bày. Hai tham số đầu vào lần lượt là số hàng và số cột của grid trình bày.

GridLayout(int, int, int, int): Khởi tạo một đối tượng trình bày, hai tham số đầu xác định số hàng và số cột trình bày. Hai tham số sau xác định khoảng cách giữa các dòng và các cột của bảng.

Lưu ý:

♦ Khi số lượng đối tượng được chèn nhiều hơn vào frame, ta muốn chương trình tự tính số hàng, hoặc tự tính số cột hiển thị, thì ta để tham số tương ứng là 0.

Ví dụ:


sẽ cố định số hàng trình bày là 3, số cột là tuỳ thuộc vào số đối tượng trong frame.


sẽ cố định số cột là 2, số dòng là mềm dẻo theo số các đối tượng trong frame.

Chương trình 6.13 minh hoạ cách trình bày grid layout: Tạo ra một dãy 10 nút nhấn và gắn vào một frame theo kiểu grid layout.

Chương trình 6.13




Hình 6.12: Kết quả demo Grid layout.

3.3/- Trình bày Border Layout

Cách hiển thị Border Layout sẽ chia frame thành 5 vùng cố định và tự động kéo dãn các vùng sao cho chiếm hết bề mặt của frame:

West: Vùng phía tây, tức là phía lề bên trái.

East: Vùng phía đông, tức là phía lề bên phải.

North: Vùng phía bắc, tức là phía lề trên.

South: Vùng phía nam, tức là phía lề dưới.

Center: Vùng trung tâm, ở chính giữa frame.

Phương thức cơ bản của lớp BorderLayout:

BorderLayout(): Khởi tạo một đối tượng trình bày theo cách border.

Khi một frame được trình bày theo cách border, ta có thể dùng phương thức sau để gắn các đối tượng vào các vùng của frame:


Ví dụ:


sẽ gán vào vùng trung tâm của myFrame một nút nhấn có tên là "Click".

Lưu ý:

♦ Cách trình bày border luôn chia frame thành 5 vùng xác định.

♦ Nếu gắn nhiều đối tượng vào cùng một vùng, chỉ có đối tượng gắn sau là nhìn thấy được.

♦ Nếu muốn trong một vùng chứa được nhiều đối tượng, ta có thể gắn vào mỗi vùng một Panel. Sau đó trong panel, ta chọn cách trình bày riêng cho panel và gắn các đối tượng vào panel.

Chương trình 6.14 minh hoạ cách trình bày border: Ta sẽ gắn vào năm vùng của frame năm nút nhấn khác nhau.

Chương trình 6.14




Hình 6.13: Kết quả demo Border layout.

3.4/- Trình bày GridBag Layout

Cách trình bày GridBag Layout cũng trình bày các đối tượng tương tự như Grid Layout: Các đối tượng sẽ được định vị theo vị trí các ô (cell) của một khung lưới (grid). Tuy nhiên, GridBag cho phép ta định kích thước của đối tượng sẽ chiếm bao nhiêu ô và sẽ được đặt ở vị trí nào trong khung lưới. Các phương thức cơ bản:

GridBagLayout(): Khởi tạo một đối tượng trình bày theo cách gridbag.

setConstraints(Component, GridBagConstraints): Đặt vị trí và kích thước của đối tượng component theo các ràng buộc trong gridbagConstraints.

GridBagConstraints

Đây là lớp chứa các ràng buộc cho các đối tượng được trình bày theo cách GridBag. Các phương thức và thuộc tính cơ bản của lớp GridBagConstraints:

GridBagConstraints(): Khởi tạo một đối tượng ràng buộc của GridBag.

gridx/gridy: Vị trí của cell mà ta muốn đặt đối tượng vào (theo chiều X và chiều Y).

gridwidth/gridheight: Kích thước (vùng trình bày) của đối tượng (Theo chiều rộng và chiều cao).

fill: Xác định cách đặt đối tượng, theo 4 cách:

- GridBagConstraints.NONE: Đối tượng không thay đổi kích thước theo các cell nó chiếm.

- GridBagConstraints.VERTICAL: Đối tượng có chiều cao kín vùng nó chiếm.

- GridBagConstraints.HORIZONAL: Đối tượng có chiều rộng kín vùng nó chiếm.

- GridBagConstraints.BOTH: Đối tượng có chiều cao và chiều rộng phủ kín vùng nó chiếm.

ipadx/ipady: Định đơn vị tăng giảm kích thước của đối tượng khi khung chứa bị thay đổi kích thước (theo chiều X và chiều Y).

insets: Xác định khoảng cách giữa các cell theo bốn hướng: Trên, dưới, trái, phải.

anchor: Xác định vị trí neo đối tượng khi kích thước khung chứa thay đổi.

Bao gồm: NORTH, NORTHEAST, NORTHWEST, EAST, SOUTH, SOUTHEAST, SOUTHWEST.

weightx/weighty: Định khoảng cách lớn ra tương đối giữa các đối tượng với nhau.

Chương trình 6.15 minh hoạ cách trình bày gridbag: Tạo ra ba nút nhấn trong frame, mỗi nút có một số ràng buộc khác nhau về kích thước và vị trí.

Chương trình 6.15










 
23/04/2012 17:04 # 12
Sinhvienkhoa17
Cấp độ: 13 - Kỹ năng: 8

Kinh nghiệm: 105/130 (81%)
Kĩ năng: 55/80 (69%)
Ngày gia nhập: 18/09/2011
Bài gởi: 885
Được cảm ơn: 335
Phản hồi: Java đồ hoạ


3.5/- Trình bày Null Layout

Cách trình bày Null Layout sẽ trình bày các đối tượng không theo một quy tắc nào. Tất cả đều do người dùng tự định vị và thiết lập kích thước cho mỗi đối tượng.

♦ Định vị đối tượng bằng phương thức setLocation():


♦ Định kích thước đối tượng bằng phương thức setSize():


♦ Ngoài ra, có thể vừa định vị, vừa định kích thước cho đối tượng thông qua phương thức:


Trong đó, hai tham số dầu định vị đối tượng, hai tham số sau định kích thước đối tượng.

Chương trình 6.16 minh hoạ cách trình bày tự do Null layout: tạo ra hai nút nhấn và gắn vào frame theo hai cách khác nhau.

Chương trình 6.16




4/- Html và Applet

Applet là một chương trình Java có thể chạy trong các trình duyệt web có hỗ trợ Java. Tất cả các applet đều là các lớp con của lớp Applet. Để tạo applet, ta cần import hai gói sau:


Hình 6.15: Kết quả demo Null layout.

4.1/- Cấu trúc của một Applet

Cấu trúc tổng quát của một applet như sau:


Các phương thức cơ bản của một applet:

init(): Khởi tạo các tham số, nếu có, của applet.

start(): Applet bắt đầu hoạt động.

stop(): Chấm dứt hoạt động của applet.

destroy(): Thực hiện các thao tác dọn dẹp trước khi thoát khỏi applet.

Lưu ý:

♦ Không phải tất cả các applet đều phải cài đặt đầy đủ 4 phương thức cơ bản trên.

Applet còn có thể cài đặt một số phương thức tuỳ chọn (không bắt buộc) sau:

paint(Graphics): Phương thức vẽ các đối tượng giao diện bên trong applet. Các thao tác vẽ này được thực hiện bởi đối tượng đồ hoạ Graphics (là tham số đầu vào).

repaint(): Dùng để vẽ lại các đối tượng trong applet. Phương thức này sẽ tự động gọi phương thức update().

update(Graphics): Phương thức này được gọi sau khi thực hiện phương thức paint nhằm tăng hiệu quả vẽ. Phương này sẽ tự động gọi phương thức paint().

Chương trình 6.17 cài đặt một applet đơn giản, mỗi phương thức sẽ in ra thông báo rằng applet đang ở trong thời điểm tương ứng.

Chương trình 6.17





 
23/04/2012 17:04 # 13
Sinhvienkhoa17
Cấp độ: 13 - Kỹ năng: 8

Kinh nghiệm: 105/130 (81%)
Kĩ năng: 55/80 (69%)
Ngày gia nhập: 18/09/2011
Bài gởi: 885
Được cảm ơn: 335
Phản hồi: Java đồ hoạ


Tạo khung Table để mọi người coi nek ...


import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.JTable;
import javax.swing.JScrollPane;
import java.util.Vector;
import javax.swing.Action;
import javax.swing.table.AbstractTableModel;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.RowSorter;
import java.awt.event.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.*;
public class TableValues extends JFrame //implements ActionListener
{private static final long serialVersionUID = 1L;
String [] ColumNames={"ID","Ten San Pham","Loai San Pham","Gia San Pham"};
Object [][] rows={{"001","NOKIA 6300","Dien Thoai","6tr3"},
{"002","Chao Chuong Dinh","Do Tieu Dung","60k"},{"003","Chao Chuong Dinh","Do Tieu Dung","60k"}};
TableRowSorter<TableModel> Sorter;
JFrame frame=new JFrame("Bang Cong Viec");
TableModel model=new DefaultTableModel(rows,ColumNames){
public Class getColumnClass(int column){
Class returnValue;
if ((column >= 0) && (column < getColumCout())){
returnValue = getValueAt(0,column).getClass();
}else{
returnValue = Object.class;}
return returnValue;}};
JTable table=new JTable(model);
public void BangSP()
{
frame.setSize(600,300);
frame.setLayout(new BorderLayout());
frame.add(new JScrollPane(table));
frame.setVisible(true);
}
//sap xep theo row
public void SapXep()
{
TableRowSorter<TableModel>sortter=new TableRowSorter<TableModel>(model);
table.setRowSorter(sortter);
}
//===============================
public int getColumCout()
{
return ColumNames.length;
}
public int getRowCout()
{
return rows.length;
}
public String getColumName(int colum)
{
return ColumNames[colum];
}
public Object getValueAt(int row,int colums)
{
return rows[row][colums];
}
public void setValueAt(Object value,int row,int col)
{
if(rows[0][col]instanceof Integer &&!(value instanceof Integer)){
    try{
        rows[row][col]=new Integer(value.toString());
        fireTableCellUpdate(row,col);
    }catch(NumberFormatException e){}
}
else{
    rows[row][col]=value;
    fireTableCellUpdate(row,col);
}
}
public boolean isCellEditable(int row,int col){
    if(col<2)
        return false;
    return true;
}
public void fireTableCellUpdate(int row,int col)
{
fireTableCellUpdate(row,col);
}

//================================================== ======
//loc va tim kiem ban hang
public static void main(String[] args) {
TableValues xuan=new TableValues();
xuan.BangSP();
xuan.SapXep();
}}




 
15/05/2012 09:05 # 14
Sinhvienkhoa17
Cấp độ: 13 - Kỹ năng: 8

Kinh nghiệm: 105/130 (81%)
Kĩ năng: 55/80 (69%)
Ngày gia nhập: 18/09/2011
Bài gởi: 885
Được cảm ơn: 335
Phản hồi: Java đồ hoạ


import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JFrame;
public class Hangman1 extends JFrame implements ActionListener{
        static final int DEAD=13;   // amount of errors till loss
        private int errors;        // amount of errors
        private String message;   // error or victorie
        private String information; // information of the message
        private String rword;      // the rword
        private StringBuffer gword;// the gword
        private Button bStart;      // Button "Restart"
        private Button bGo;         // Button "Go"
        private TextField tfLetter; // letter box
        private Font fnt;           // common font
    public void init(){
        fnt = new Font( "Monospaced", 0, 12 );
        setFont(fnt);    
                // Create textbox for guess letter
                
                tfLetter = new TextField();
                // Create buttons and labels
                
                bStart = new Button("Restart");
                bGo = new Button("Go");
                // Add the graphical elements to the applet
                
                add(bStart);
                add(new Label("Guess a letter:"));
                add(tfLetter);
                add(bGo);
 
                // Buttons are events:
                bStart.addActionListener(this);
                bGo.addActionListener(this);
 
                // Start first game
                initGame();
        }
        
        public void initGame(){
        
        
                errors=0;
                
                
        /* Enter the wordslist, separated by a | here: */
                String str = "computer|radio|calculator|teacher|bureau|police|geometry|president|subject|country|enviroment|classroom|animals|province|month|politics|puzzle|instrument|kitchen|language|vampire|ghost|solution|service|software|virus25|security|phonenumber|expert|website|agreement|support|compatibility|advanced|search|triathlon|immediately|encyclopedia|endurance|distance|nature|history|organization|international|championship|government|popularity|thousand|feature|wetsuit|fitness|legendary|variation|equal|approximately|segment|priority|physics|branche|science|mathematics|lightning|dispersion|accelerator|detector|terminology|design|operation|foundation|application|prediction|reference|measurement|concept|perspective|overview|position|airplane|symmetry|dimension|toxic|algebra|illustration|classic|verification|citation|unusual|resource|analysis|license|comedy|screenplay|production|release|emphasis|director|trademark|vehicle|aircraft|experiment";
                String[] temp;
                
                
                String delimiter = "\\|";
                
                /* given string will be split by the argument delimiter provided. */
                temp = str.split(delimiter);
                
        /* Setting the seed */
        Random randomGenerator = new Random();
                
        /* Generating random number */
        int randomInt = randomGenerator.nextInt(temp.length);
                rword = temp[randomInt];
                char positions[] = new char[rword.length()];
                for (int i=0; i<rword.length(); i++) {
                        positions[i] = '.';
                }
                String s = new String(positions);
                gword = new StringBuffer(s);
                tfLetter.setText("");
 
                // Delete the messages
                message="";
                information = "";
                repaint();
        }
                                                                                                                                                                         @Override
        public void paint(Graphics g) {
        
                
                // Draw the hangman
                int baseY = 250;
                
                if (errors >  0){    // ground
                        g.drawLine(90, baseY,200,baseY);
                }
                if (errors >  1){    // bar up
                        g.drawLine(125,baseY,125,baseY-100);
                }
                if (errors >  2){
                        g.drawLine(110,baseY,125,baseY-15);
                }
                if (errors >  3){
                        g.drawLine(140,baseY,125,baseY-15);
                }
                if (errors >  4){    // side bar
                        g.drawLine(125,baseY-100,175,baseY-100);
                }
                if (errors >  5){
                        g.drawLine(125,baseY-85,140,baseY-100);
                }
                if (errors >  6){    // rope
                        g.drawLine(175,baseY-100,175,baseY-75);
                }
                if (errors >  7){    // body
                        g.drawOval(170,baseY-75,10,12);
                }
                if (errors >  8){
                        g.drawOval(170,baseY-65,15,25);
                }
                if (errors >  9){    // arms
                        g.drawLine(160,baseY-65,170,baseY-60);
                }
                if (errors > 10){
                        g.drawLine(183,baseY-60,193,baseY-65);
                }
                if (errors > 11){    // legs
                        g.drawLine(165,baseY-30,170,baseY-45);
                }
                if (errors > 12){
                        g.drawLine(183,baseY-45,193,baseY-30);
                }
                
                // Show the messages
                g.drawString( message, 40, baseY+25 );
                g.drawString( information, 25, baseY+45 );
                g.drawString( new String (gword), 110, 60);
        
        }
        
                                                                                                                 @Override
        public void actionPerformed(ActionEvent e){
                if (e.getSource() == bStart){
                        initGame();
                }
                if (e.getSource() == bGo){
                        processTurn();
                        // Delete the letter input box
                        tfLetter.setText("");
                        repaint();
                }
        }
        private void processTurn(){
                String s, t;
                char a;
                s = tfLetter.getText();
                a = s.charAt(0);
                
                if (!Character.isLetter(a)){
                          message="Only enter letters!";
                          return;
                }
                if (s.length()>1){
                          message="One letter at a time!";
                          return;
                }
        
                // Has the letter been guessed
    
                t = new String(gword);
                if (t.indexOf(s) != -1){
                        message="Letter has already been guessed";
                        return;
                }
        
                // If the letter doesn't occur in the rword
        
                if (rword.indexOf(s) == -1){
                        message="";
                        errors++;
                        if (errors==DEAD){
                                message="You lost!";
                                information =
                                      "Click on restart for another chance!";
                        }
                        
                        return;
                }
        
                // Replace dots in gword with the found letter.
        
                for (int i=0; i<rword.length(); i++){
                        if (rword.charAt(i) == a){
                                gword.setCharAt(i, a);
                        }
                }
                t = new String(gword);
        
                // If all the dots have been filled, you win
        
                if (t.indexOf('.') == -1){
                        message="You win!";
                        return;
                }
              
                // Delete message
                
                message="";
                repaint();
        }
        public static void main(String args[]){
            Hangman1 k=new Hangman1();
            ActionEvent e = null;
            Graphics g = null;
            k.init();
            k.initGame();
            k.paint(g);
            k. actionPerformed(e);
            k.processTurn();
        }
}





 
Copyright© Đại học Duy Tân 2010 - 2024