java button

25
anhsuytu Cựu Staff Giới thiệu về lập trình giao diện: § Các ứng dụng hiện nay có thể là các ứng dụng giao diện đồ hoạ ( GUI) và những ứng dụng giao diện dòng lệnh (command line). Với giao diện đồ hoạ, các ứng dụng thân thiện với người dùng hơn, và do đó ngày nay các ứng dụng đều có gắng khoác lên mình bộ mặt Graphics User Interface. Java hoàn toàn có thể làm được điều này. § Như ta đã biết Java có thể lập trình các ứng dụng Windows không thua gì các ngôn ngữ lập trình truyền thống. Hiện nay các ngôn ngữ lập trình truyền thống đã được trực quan hoá(visualizasion) khiến cho việc viết các ứng dụng hỗ trợ giao diện người dùng (Graphics User Interface) trở nên dễ dàng. Java cũng làm được các ứng dụng GUI như thế. Có điều môi trường phát triển trực quan hỗ trợ cho lập trình Java như Visual Age (IBM), Jbuider (Borland), Visual J++ lại không theo kịp sự tiến bộ của ngôn ngữ Java. Và ta vẫn phải đọc và viết mã lệnh trực tiếp. Do đó chúng ta hãy làm quen với cách viết chương trình Windows của Java. Khi mọi thứ đã rõ ràng, sử dụng các công cụ trực quan sẽ không gì khó khăn lắm. § Java sử dụng các hàm thư viện AWT ( Abstract Window Toolkit) để thực hiện bộ mặt đồ hoạ của mình. AWT là thư viện được viết để có thể chạy trên nhiều môi trường đồ hoạ của các hệ điều hành khác nhau. Vì lý do này, AWT được thiết kế với tình năng đơn giản và tổng quát hơn là đặc thù về giao diện. AWT có đầy đủ các thành phần giao diện cơ bản như nút nhấn, checkbox, canvas, listbox, textbox… < Các thành phần AWT: § Nút nhấn Button § Ô văn bản Textfield § Nhãn Labels § Vùng văn bản Text areas § Trình đơn Menus § Nút chọn Radio button § Ô đánh dấu Check box § Khung vẽ Canvas

Upload: hacuc

Post on 27-Jun-2015

191 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Java Button

anhsuytu Cựu Staff Giới thiệu về lập trình giao diện:§ Các ứng dụng hiện nay có thể là các ứng dụng giao diện đồ hoạ ( GUI) và những ứng dụng giao diện dòng lệnh (command line). Với giao diện đồ hoạ, các ứng dụng thân thiện với người dùng hơn, và do đó ngày nay các ứng dụng đều có gắng khoác lên mình bộ mặt Graphics User Interface. Java hoàn toàn có thể làm được điều này.§ Như ta đã biết Java có thể lập trình các ứng dụng Windows không thua gì các ngôn ngữ lập trình truyền thống. Hiện nay các ngôn ngữ lập trình truyền thống đã được trực quan hoá(visualizasion) khiến cho việc viết các ứng dụng hỗ trợ giao diện người dùng (Graphics User Interface) trở nên dễ dàng. Java cũng làm được các ứng dụng GUI như thế. Có điều môi trường phát triển trực quan hỗ trợ cho lập trình Java như Visual Age (IBM), Jbuider (Borland), Visual J++ lại không theo kịp sự tiến bộ của ngôn ngữ Java. Và ta vẫn phải đọc và viết mã lệnh trực tiếp. Do đó chúng ta hãy làm quen với cách viết chương trình Windows của Java. Khi mọi thứ đã rõ ràng, sử dụng các công cụ trực quan sẽ không gì khó khăn lắm. § Java sử dụng các hàm thư viện AWT ( Abstract Window Toolkit) để thực hiện bộ mặt đồ hoạ của mình. AWT là thư viện được viết để có thể chạy trên nhiều môi trường đồ hoạ của các hệ điều hành khác nhau. Vì lý do này, AWT được thiết kế với tình năng đơn giản và tổng quát hơn là đặc thù về giao diện. AWT có đầy đủ các thành phần giao diện cơ bản như nút nhấn, checkbox, canvas, listbox, textbox…< Các thành phần AWT:

§ Nút nhấn Button§ Ô văn bản Textfield§ Nhãn Labels§ Vùng văn bản Text areas§ Trình đơn Menus§ Nút chọn Radio button§ Ô đánh dấu Check box§ Khung vẽ Canvas§ Danh sách List§ Thanh trượt Scrollbars§ Lựa chọn Choice§ Khung cửa sổ Frame

Container:

§ Những đối tượng có khả năng quản lý và nhóm các đối tượng con lại được gọi đối tượng khung chứa (container). Những đối tượng con thuộc thành phần AWT như: button, textfield, checkbox…chỉ sử dụng được khi ta đưa nó vào thành phần khung chứa. Java cung cấp cho ta các đối tượng khung chứa sau:§ Panel§ Frames§ Dialogs§ ScrollPanes

Page 2: Java Button

§ Tất cả các đối tượng khung chứa đều có khả năng xử lý cơ bản đó là đưa các đối tượng con vào và loại chúng ra.4 Panel§ 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 khung chứa Panel như sau:Panel myPanel=new Panel();myPanel.add(myButton);Ta có thể tạo nhiều khung chứa lồng nhau với bao nhiêu cũng được.

4 Frame:§ Khung chứa Frame là một trong những thành phần mạnh mẽ nhất của thư việ AWT. Nó giúp ta tạo 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. Ví dụ:import java.awt.*;public class myFrame extends Frame{public static void main(String args[])**myFrame f=new myFrame();f.setTitle(“This is my Frame”);f.setBounds(300,200,200,200);f.show();}}

Kết quả khi chạy chương trình trên bạn sẽ được:

Khung chứa Frame có một số đặc điểm sau:- Sau khi tạo được đối tượng cho Frame, muốn nó hiện hữu trên màn hình thì ta phải trải qua một số bước sau:+ Định lại kích thước cho cửa sổ bằng phương thức frameObject.setsize(width,height);+Định vị trí Frame sẽ xuất hiện bằng phương thức: frameObject.setLocation(int x, int y);+ Đưa cửa sổ ra màn hình: frameObject.show();+ Ta có thể tạm thời dấu Frame đi bằng phương thức: frameObject.hide(); Khi gọi phương thức này thì Frame đó sẽ không mất đi mà chỉ tạm thời ẩn đi, nếu gọi lại phương thức .show() thì Frame sẽ xuất hiện trở lại. Muốn nó mất đi hoàn toàn thì ta gọi phương thức public void dispose()

4 Dialog:

§ Dialog cũng là một khung chứa như Frame, nhưng cửa sổ này ít chức năng hơn, nó còn được gọi là popup-window. Ta có thể tạo ra Dialog dưới hai hình thức là modal và non-modal.• Modal là các cửa sổ Dialog khi hiện ra sẽ khoá chặt các cửa sổ còn lại. Những cửa sổ modal này thường yêu cầu một tác vụ nào đó cần phải được hoàn thành trước khi chuyển sang tác vụ tiếp theo, như thông báo lỗi, hỏi có muốn save hay không…

Page 3: Java Button

• Non – modal thi ngược lại, những của sổ dạng này thích hợp cho những thao tác tuỳ biến, ít ảnh hưởng đến ứng dụng chính. Người dùng vẫn có thể tương tác sổ ứng dụng chính khi mở cửa sổ non-modal đang hiện hữu. Ví dụ như search, help…

Các tạo Dialog:

+ Một Dialog phải được gán với một cửa sổ ứng dụng chính Framepublic Dialog(Frame parentWindow, boolean isModal); tham số isModal quyết định xem Dialog sẽ được mở ra ở dạng nào, modal(true) hay non-modal(false). Một khi đã xác nhận Dialog mở ra ở dạng nào thì sẽ không thay đổi được nữa. Ngoài ra ta còn có thể mở Dialog có dòng tiêu đề bằng phương thức sau: public Dialog(Frame parentWindow, String title, boolean isModal), trong đó title chính là chuỗi thể hiện tiêu đề. Sau khi làm các thao tác tương tự như Frame thì ta gọi phương thức show() hiển thị Dialog+ Các đặc điểm của một Dialog: (tương tự Frame)Vd Dialog:

public class MessageBox ** Dialog msgBox;public MessageBox(Frame parentWindow, String msg,String title)**if (parentWindow==null)**Frame emptyWindow =new Frame();msgBox=new Dialog(emptyWindow,title,true);} elsemsgBox=new Dialog(parentWindow,title,true);Label Message=new Label(msg);msgBox.setLayout(new FlowLayout());msgBox.add(Message);Button OKButton=new Button("OK");msgBox.add(OKButton);msgBox.setSize(new Dimension(200, 100));}public void show()**msgBox.show();}}

Mirror: Movie Giới thiệu về lập trình giao diện trong Java Game Giới thiệu về lập trình giao diện trong Java Anime Giới thiệu về lập trình giao diện trong Java Music Giới thiệu về lập trình giao diện trong Java Torrentz Giới thiệu về lập trình giao diện trong Java Subtitle Giới thiệu về lập trình giao diện trong Java

Page 4: Java Button

Các bài viết liên quan tới Giới thiệu về lập trình giao diện trong Java:

1. [RS] Lập trình giao diện game.

Sách cung cấp khá nhiều kỹ thuật và hiệu ứng được sử dụng trong việc tạo ra những hình ảnh trong...

2. [Direct Link] GDesk(iDesk)v0.33 giả lập giao diện trên 5800

GDesk(iDesk) trên 5800 GDesk là chương trình giả lập tự tạo giao diện,menu và icon,trông máy bạn...

3. Xin Ebook về lập trình Shell trong Linux

Ai có ebook về lập trình trong shell trên hệ điều hành Linux cho mình xin với

4. Seven Skin Pack Ultimate - Giả lập giao diện Windows 7 hoàn hảo nhất hiện nay

Mặc dù Windows 7 đã xuất hiện bản cài 32bit, nhưng những yêu cầu về cấu hình của nó lại khiến không...

5. [Mediafire] Se7en Look V.2 for WinXP - Giả lập giao diện Windows seven

Với Se7en Look V.2 for WinXP giao diện Windows XP của bạn sẽ mang một giáng vẻ hoàn toàn mới, giao...

6. Seven Skin Pack Ultimate - Trình giả lập giao diện Windows 7 hoàn hảo

Seven Skin Pack Ultimate mang đến cho bạn giao diện Windows 7 "thời thượng" cùng những hiệu ứng rất...

7. Seven Skin Pack Ultimate Trình giả lập giao diện Windows 7 hoàn hảo...

Seven Skin Pack Ultimate Trình giả lập giao diện Windows 7 hoàn hảo... Seven Skin Pack Ultimate...

8. THƯ MỜI buổi Giới thiệu Windows Mobile giao diện Tiếng Việt

*THƯ MỜI * Tham gia buổi Giới thiệu *Windows Mobile giao diện Tiếng Việt* Image:

9. Giới thiệu về các hàm image trong PHP

Giới thiệu về các hàm images trong PHP I. Giới thiệu PHP ko chỉ dừng lại ở việc xuất dữ liệu...

10. 1000 Java tips-Một cuốn sách hay cho các lập trình viên java

Các bạn yêu thích java thử đọc cuốn sách này xem: :11:

Share o Share this post on

o Twitter

o Facebook

Page 5: Java Button

Đắng kí ngay để trả lời bài viết này  Lên Trên

24 August 2006 11:46 AM #2 anhsuytu Cựu Staff 4 ScrollPane:

Khung chứa này không phải là một cửa sổ, nó chỉ có tính chất như panel dùng để chứa các đối tượng con mà thôi, tuy nhiên một tính chất đặc biệt của ScrollPane là đối với những đối tượng con mà nó chứa quá lớn thì ScrollPane sẽ xuất hiện thanh trượt đứng và ngang ở hai bên viền để ta có thể xem được toàn bộ đối tượng mà nó chứa.

Tạo ScrollPane:ScrollPane myScrollPane=new ScrollPane();myWindow.add(myScrollPane);myScrollPane.add(myButton);myScrollPane.add(myLabel);• Các phương thức: + setLayout(LayoutManager): Định Layout cho scrollpane+ scp.setWheelScrollingEnabled(boolean): Có cho phép xử dụng wheel trên chuột hay ko?

Layout ManagerKhi ta đưa một đối tượng vào khung chứa (container) thì các khung chứa phải có trách nhiệm sắp xếp chỗ và định vị trí cho các đối tượng con của nó. Khung chứa chuyển giao bổn phậnnày cho một đối tượng khác thực hiện, đó là các đối tượng Layout. Việc để cho các đối tượng con được sắp xếp theo một trình tự tổng quát nào đó là rất cần thiết khi ta phải di chuyển chương trình qua nhiều môi trường hệ điều hành khác nhau, nhiều màn hình với độ phân giải khác nhau. AWT cung cấo cho t ạ cách sắp xếp trình bày do các đối tượng sau thực hiện:- FlowLayout: Sắp xếp các đối tượng từ trái qua phải và từ trên xuống dưới. Các đối tuợng đều giữ nguyên kích thước của mình.- GridLayout: Tạo một khung lưới vô hình với các ô bằng nhau. Các đối tượng sẽ đặt vừa kích thước với từng ô đó. Thứ tự sắp xếp từ trái qua phải và từ trên xuống dưới- B#####Layout: Các đối tượng được đặt theo các đường viền khung chứa, theo các cạnh WEST, EAST, SOUHT, NORTH.- CardLayout: Các đối tượng được đặt vừa vặn với khung chứa và nằm chồng lên nhau như những lá bài (card). Như vậy ta chỉ thấy được một đối tượng mà thôi, các đối tượng khác nằm bên dưới sẽ bị che khuất.- GridBagLayout: Đây là cách trình bày uyển chuyển nhưng cũng dễ gây nhầm lẫn nhất, các đối tượng cũng được đưa vào các ô của một khung lưới vô hình (tương tự GridLayout) nhưng kích thước của các đối tượng không nhất thiết phải vừa với khung chứa mà có thể là từ 2-> 3 ô hay nhiều hơn nữa, tuỳ thuộc vào ràng buộc mà ta chỉ định

Page 6: Java Button

bằng GridBagconstraintFlowLayoutCách trình bày FlowLayout rất đơn giản. Ta có thể dùng phương thức khởi dựng đối tượng FlowLayout như sau:public FlowLayout() hoặc chỉ định cách canh lề bằng phương thức thứ hai là: public FlowLayout(int align) các giá trị có thể truyền cho align là FlowLayout.LEFT, FlowLayout.RIGHT, FlowLayout.CENTER. Mặt khác cũng có thể chỉ ra khoảng cách giửa các đối tượng trên cùng một hàng và giữa các hàng với nhau bằng phương thức sau: public void FlowLayout(int align, int hgap, int vgap)Ví dụ:

4 GridLayout GridLayout sắp xếp các đối tượng con trong khung chứa thành nhiều ô có kích thước đồng đều nhau. Các đối tượng lần lượt được đặt vào các ô trên một hàng theo thứ tự từ trái qua phải và từ trên xuống dưới. Vì vậy khi tạo bộ quản lý cách trình bày theo kiểu GridLayout ta chỉ cần định rõ số hàng và số cột của khung lưới vo hình mà nhữg đối tượng con trong khung chứa sẽ được xếp vào đó: public GridLayout(int rows, ints cols). Đôi khi GridLayout tự tính lấy số hàng và số cột cần thiết. Chương trình cũng có thể xác định khoảng cách giữa các đối tượng khi tạo bộ quản lý Layout như sau: public GridLayout(int Rows, int Cols, int hgap, int vgap)Ví dụ:

4 B#####LayoutĐối tượng B#####Layout sắp xếp các đối tượng con trong khung chứa hơi đặc biệt một chút, đó là đối tượng sẽ được đặt theo các đường viền của khung chứa (b#####). Có nghĩa là theo các cạnh của khung. Java định các cạnh này là: WEST, EAST, SOUTH, NORTH và CENTER. Đối tượng sẽ được kéo dãn chiều dài ra cho vừa với đường viền khung chứa. Tạo bộ quản lý theo kiểu B#####Layout này rất đơn giản: public B#####Layout(), container.setLayout(new B#####Layout()). Khi đưa một đối tượng vào khun ta phải khai báo xem đối tượng đó sẽ được đặt vào cạnh nào của khung: containerObject.add(“North”, new Button(“Top”));Ví dụ:

4 NullLayoutNullLayout (trình bày tự do): Không thể không đề cập đến một cách trình bày khá tự do là null. Khi áp dụng null cho việc sắp đặt các đối tượng trong khung chứa cũng đồng

Page 7: Java Button

nghĩa với việc ta phải làm lấy tất cả, từ việc định kích thước cho đến xác định vị trí toạ độ chính xác trên màn hình cho các đối tượng. Ta không cần phụ thuộc vào bất cứ ràng buộc west, east, south, north nào cả. Để áp dụng cách trình bày null cho khung chứa, thay vì tạo ra một bộ quản lý nào đó rồi gán vào khung chứa, đơn giản ta chỉ cần làm như sau: setLayout(null). Các phương thức để xác định kích thước và toạ độ cho các đối tượng con là:public void setLocation(Point p);public void serSize(Dimension d);public void setBounds(Rectangle r);

Button

Mặc cơ chế làm việc của nút nhấn rất đơn giản nhưng nó lại là thành phần khá quan trọng trong các giao diện sử hoạ. Cách tạo nút nhấn (Button): ta chỉ cần gọi phương thức sau: public Button(String label) với label là tên nhãn mà ta muốn nút nhấn đó hiển thị như OK hay Cancel chẳng hạn. Ví dụ:Để tạo được hai Button như trên ta viết lệnh sau:Button btOk=new Button(“OK”);Buttom btCancel=new Button(“Cancel”); sau khi tạo xong công việc còn lại là add nó vào đâu đó, chẳng hạn ta có một Frame có tên là myWindow ta muốn add 2 button này vào thì làm như sau: myWindow.add(btOk); myWinodw.add(“btCancel”);Để đối tên nhãn cho nút nhấn ta gọi phương thưc: public String getLabel()• Sử dụng Button: Mô hình xử lý mới (1.2 trở lên) áp dụng bộ nghe (listener) và một bộ điều phối (Adapter). Cơ chế này giúp ta phân rã các ứng dụng của mình ra thành nhiều đối tượng dùng để nghe ngóng (listener object) xem có đối tượng nào gọi mình hay không, nếu có thì phục vụ đối tượng đó theo khả năng của mình. Ví dụ:public class MyButton{ public static void main(String args[])**Frame myWindow=new Frame("My Button");FlowLayout fl=new FlowLayout();myWindow.setSize(200,200);myWindow.setLayout(fl);Button red=new Button("Red");myWindow.add(red);red.addActionListener(new processButton(myWindow, Color.red));Button blue=new Button("blue");myWindow.add(blue);blue.addActionListener(new processButton(myWindow,Color.blue));myWindow.show(); }}

class processButton implements ActionListener{Frame myWindow;Color color;

Page 8: Java Button

processButton(Frame myWindow, Color color)**this.myWindow=myWindow;this.color=color;}public void actionPerformed(ActionEvent e)**myWindow.setBackground(color);}}

Share o Share this post on

o Twitter

o Facebook

Đắng kí ngay để trả lời bài viết này  Lên Trên

24 August 2006 11:52 AM #3 anhsuytu Cựu Staff Label§ Label là thành phần đơn giản nhấn trong thư viện AWT. Đối tượng nhãn chỉ dùng để trình bày một chuỗi văn bản thông thường, nhằm mục đích mô tả thêm thông tin cho các đối tượng khác. Ta cũng có thể dùng nhãn để làm công cụ đưa kết quả ra màn hình dưới dạng một chuỗi§ Có 3 cách để tạo một đối tượng nhãn. Cách đơn giản là tạo một nhãn không có nội dung gì cả bằng phương thức: public Label()§ Tuy nhiễn một nhãn mà không có nội dung gì thì ko có ý nghĩa nhiều nắm chính vì vậy chúng ta có thể tạo nhãn bàng cách tiếp theo là public Label(String LabelText), cách này sẽ tạo ra một nhãn có text là LabelText. Ngoài ra còn một cách nữa để tạo Label public Label(String LabelText, int align) cách này sẽ tạo ra một Label với text là LabelText và đước canh align, align có thể nhận các giá trị LEFT, RIGHT, CENTER. Để lấy nội dung hiện hành của Label ta gọi phương thức public String getText(), xem Label được canh lề ở chế độ nào ta dùng phương thức public int getAlignment(). Muốn thiết lập lại chế độ canh lề ta dùng phương thức public void setAlignment(int align) phương thức này chỉ nhận một trong các giá trị: LEFT, CENTER, RIGHT. Nếu giá trị truyền vào khác với các giá trị trên thì sẽ xảy ra ngoại lệ IlligalArgmentException. Chính vì vậy khi gọi phương thức này chúng ta sẽ phải bắt ngoại lệ Label Example

public static void main(String args[])**//Khai báo frame & setLayoutmyWindow.show();

Page 9: Java Button

Label lb1=new Label("khong gì het");Label lb2=new Label("Phai",Label.RIGHT);Label lb3=new Label("giua",Label.CENTER);Label lb4=new Label("Trai",Label.LEFT);myWindow.add(lb1); myWindow.add(lb2);myWindow.add(lb3);myWindow.add(lb4);

}}

CheckBox§ Ô checkbox tương tự như nút nhấn chỉ có khác là chúng dùng để biểu hiện trạng thái chuyển đổi giữa có/không hoặc tắt mở. Mỗi lần ta nhấp chuột vào ô chọn nó thay đổi trạng thái từ đánh dấu sang không đánh dấu hoặc ngược lại.§ Một ô check box bao gồm hai phần: Nhãn và một dấu biểu hiện trạng thái của ô. Nhãn được đặt cạnh ô chứa dấu trạng thái. Trạng thái được biểu diễn như một biến kiểu boolean. Mặc định ô sẽ chưa được đánh dấu.§ Lớp CheckBox dùng để tạo checkbox có tât cả 5 phương thức khởi dựng sau:§ public CheckBox(): Tạo ô đánh dấu không có nhãn (có thể gán nhãn sau)§ public CheckBox(String label): tạo checkbox với nhãn là label.§ public CheckBox(String label, boolean state): tạo Checkbox với nhạn là label và trạng thái là state, state có thể nhận giá trị true (được đánh dấu) hoặc false (chưa được đánh dấu)§ public CheckBox(String label, boolean state, CheckboxGroup g): tạo ra checkbox với nhãn label, trạng thái state, và group g, khi tham số group được khai báo thì các CheckBox thuộc Group đó sẽ thành Radio Button, chúng ta sẽ xét phương thức này ở phần sau.§ Để kiểm tra trạng thái của checkbox ta dùng phương thức public boolean getState(), thiết lập trạng thái ta dùng phương thức: public void setState().§ Xứ lý tình huốn khi ô đánh dấu thay đổi trạng thái: Để xử lý tình huốn khi nút đó được đánh dấu thì tương tự như button ta cũng sẽ tạo một listener. Ta tạo ra Listener bằng cách cài đặt (implements) các interface thích hợp mà Java đã thiết kế sẵn cho mỗi loại thành phần AWT. Ở trường hợp này là ItemListener. Để làm cho đối tượng listener biết các lắng nghe ô đánh dấu có thay đổi trạng thái ta dùng phương thức addItemListener của đối tượng CheckBox. Vì lớp ItemListener là một abstract nên muốn tạo mới một đối tượng thì ta phải cài đặt tất cả các phương thức hàm của nó. ItemListener có một hàm cho chúng ta cài đặt đó là itemStateChanged(ItemEvent evt)Checkbox Examplepublic static void main(String args[])**Frame myWindow=new Frame("My Button");

Page 10: Java Button

FlowLayout fl=new FlowLayout();myWindow.setSize(200,200);myWindow.setLayout(fl);Checkbox cb=new Checkbox("Red/blue");myWindow.add(cb) ;cb.addItemListener(new processCheckbox(myWindow)); myWindow.show();}class processCheckbox implements ItemListener{Frame myWindow; processCheckbox(Frame myWindow)**this.myWindow=myWindow; }public void itemStateChanged(ItemEvent e)**if(e.getStateChange()==ItemEvent.SELECTED)myWindow.setBackground(Color.red);elsemyWindow.setBackground(Color.blue);}}

Radiobutton§ Như đã nói ở trên thì Radio button thực chất chỉ là Checkbox có kiểu đặc biệt. Không có lớp RadioButton nào để phục vụ cho việc tạo nút radiobutton. Thay vào đó ta sẽ dùng chính ngay lớp Checkbox để tạo radiobutton. Ta chỉ việc tạo ra các ô Checkbox và đặt nó vào một group từ lớp CheckboxGroup bằng phương thức sau:§ public CheckboxGroup(). Vd:§ CheckboxGroup g=new CheckboxGroup();§ Checkbox r1=new Checkbox(“Red”,g,true);§ Checkbox r2=newCheckbox(“Blue”,g,false);§ Với một nhóm các nút ta có thể lấy ra đối tượng hiện đang được chọn bằng phương thức của lớp CheckboxGroup như sau: public Checkbox getSelectedCheckbox()§ Cách sử dụng nút chọn: Vì đây là một thành phần đặc biệt của Checkbox nên các tính chất của nó cùng gần giống với Checkbox. Ta cũng tạo một đối tượng từ interface ItemListener để lắng nghe tình huống thay đổi với nút chọn. Ta vẫn phải cài đặt phương thức itemStateChanged(ItemEvent evt). Đối tượng ItemEvent sẽ cho biết tình huống xảy ra với đối tượng nào, nút có được chọn hay không, nút thuộc loại nào(Checkbox hay Radio). Phương thức getItemSelectable sẽ trả về đối tượng nơi mà tình huống vừa phát sinh: public ItemSelectable getItemSelectable(), phương thức getItem của đối tượng ItemEvent sẽ cho ta biết giá trị của nút chọn. Trong trường hợp này nó sẽ trả về nhãn gắn với radioButton: public Object getItem()

Page 11: Java Button

Radiobutton Examplepublic static void main(String args[])**//khai báo Frame myWindow và set FlowLayoutmyWindow.setLayout(fl);CheckboxGroup g=new CheckboxGroup();Checkbox red=new Checkbox("Red",g,false);Checkbox blue=new Checkbox("Blue",g,false);myWindow.add(red);myWindow.add(blue);red.addItemListener(new processRadio(myWindow));blue.addItemListener(new processRadio(myWindow)); myWindow.show(); }class processRadio implements ItemListener{Frame myWindow; processRadio(Frame myWindow)**this.myWindow=myWindow; }public void itemStateChanged(ItemEvent e)**if(e.getStateChange()==ItemEvent.SELECTED)** String itemLabel=(String)e.getItem();if(itemLabel=="Red") myWindow.setBackground(Color.red);else myWindow.setBackground(Color.blue);} }}

Choice

§ Thành phần choice tương tự với một ####down menu ta vẫn thường gặp trong các ứng dụng Windows. Ta chỉ được chọn một trong các mục trong Choice. Để tạo được Choice ta sử dụng lớp Choice và gọi phương thức khởi dựng sau: public Choice, vd: Choice myOption=new Choice(); Sau khi tạo ra được đối tượng Choice để đưa các thành phần vào ta dùng phương thức addItem như sau:public synchroized void addItem(String item) throws NullPointerException. Phương thức này có thể gây ra ngoại lệ NullPointerException, chính vì vậy khi gọi phương thức này ta phải bắt ngoại lệ này. Ta cũng có thể bỏ một item đi băng phương thức: public synchroized void remove(), getSelectedIndex() trả về thứ tự item được chọn, getSelectedItem() trả về tên item được chọn§ Sử dụng thành phần Choice:§ Tương tự như CheckBox ta cũng sẽ cài đặt đối tượng ItemListener

Page 12: Java Button

Choice Examplepublic static void main(String args[])**Frame myWindow=new Frame("My Button");FlowLayout fl=new FlowLayout();myWindow.setSize(200,200);myWindow.setLayout(fl);Choice c=new Choice();c.addItem("Choose one");c.addItem("Red");c.addItem("Blue");myWindow.add(c);c.addItemListener(new processChoice(myWindow));myWindow.show();}class processChoice implements ItemListener{Frame myWindow; processChoice(Frame myWindow)**this.myWindow=myWindow; }public void itemStateChanged(ItemEvent e)**if(e.getStateChange()==ItemEvent.SELECTED)** String itemLabel=(String)e.getItem();if(itemLabel=="Red") myWindow.setBackground(Color.red);else myWindow.setBackground(Color.blue);} }}

Share o Share this post on

o Twitter

o Facebook

Đắng kí ngay để trả lời bài viết này  Lên Trên

24 August 2006 11:54 AM #4 anhsuytu Cựu Staff List

§ Lớp List cho phép ta tạo ra một danh sách các phần tử để lựa chọn. Không như đối tượng Choice mỗi lần chỉ cho phép chọn một phần tử, đối tượng danh sách List trình bày

Page 13: Java Button

tất cả các phần tử và cho phép chọn nhiều phần tử cùng một lúc.§ Cách tạo List: Ta có 3 cách để tạo ra một danh sách từ lớp List:§ public List(): Phương thức này tạo ra một danh sách mỗi lần chỉ chọn được một phần tử§ public List(int rows): với phương thức này ta có thể chỉ định bao nhiêu phần tử sẽ được hiển thị (rows) cùng một lúc trong danh sách§ public List(int rows, boolean multiMode): phương thức này tạo ra một danh sách cho phép lựa chọn nhiều phần tử cùng một lúc§ Tương tự như Choice ta có thể đưa các mục chọn item vào danh sách bằng lệnh add: public synchronized void add(String item). Tương tự Choice ta có thể gọi phương thức public int getSelectedIdex() hàm này trả về vị trí phần tử được chọn trong danh sách, public String getSelectedItem() trả về tên phần tử được chọn trong danh sách.§ Đối với các danh sách có thể chọn được nhiều phần tử cùng một lúc ta có thể lấy ra vị trí tất cả các phần tử đang được chọn bằng phương thức: public int[] getSelectedIndexs(), hoặc trực tiếp lấy ra các phần tử khi gọi: public String[] getSelectedItems()§ Sử dụng List: Hãy cài đặt interface ItemListener để tạo ra đối tượng biết lắng nghe sự thay đổi trạng thái của các phần tử trong danh sách (được hay bỏ chọn). Sử dụng ItemEvent trong phương thức itemStateChanged để biết được chỉ số của phần tử đang thay đổi trạng thái(getItem). Để xứ lý được tình huống nhấp đôi chuột, hãy cài đặt interface ActionListener và gắn nó vào danh sách. Phương thức getActionCommand() trong Actionevent sẽ trả về phần tử bị nhắp đôi. TextComponentText Field§ Thư viện AWT cung cấp cho ta 2 lớp khác nhau để tạo ra đối tượng nhập được văn bản vào là đó là lớp TexField và TextArea. Đối tượng thuộc lớp TextField chỉ có thể nhập được một dòng văn bản, còn đối tượng TextArea có thể nhập được nhiều dòng văn bản. Cả hai lớp này đều thuộc lớp TextComponent nên chúng sử dụng rất nhiều phương thức tương tự nhau.§ Để tạo TextField ta làm như sau: public TextField() : phương thức này tạo ra một ô văn bản không xác định kích thước. § Public TextField(int numColumns): tạo ra một ô văn bản hiển thị tối đa numColumns ký tự. Khi tạo văn bản với nội dung là một chuỗi cho trước thi gọi phương thức: public TextField(String initialText) với initalText là nội dung sẽ xuất hiện khi tạo ô văn bản. TextArea§ Các đặc điểm của TextArea hoàn toàn giống với TextField chỉ có một điều khác là khi tạo TextArea ta sẽ phải cung cấp số dòng và số cột. Để tạo một vùng văn bản với kích thước bất kỳ ta dùng phương thức: public TextArea(). Để tạo một vùng văn bản với nột dung cho trước ta dùng phương thức: public TextArea(String initialText). Tạo một vùng văn bản với số dòng, cột định trước: public TextArea(int rows, int cols). Tạo một vùng văn bản với số dòng, số cột và nội dung định trước: public TextArea(String initialText, int rows, int cols) § Chính vì lý do TextField & TextArea có cùng chung một lớp TextComponent nên chúng có các đặc điểm tương tự nhau.§ Muốn đưa văn bản vào TextField hoặc TextArea ta dùng phương thức: setText: public void setText(String newText). Ta có thể lấy một chuỗi con đang được đánh dấu hay được chọn băng phương thức: getSelectedText().v Đặc điểm riêng của TextField

Page 14: Java Button

§ Tuy hai đối tượng này cung chúng một lớp TextComponent nhưng mỗi thành phần nay cũng có những đặc điểm riêng. Cụ thể ở đây là phương thức public void setEchoChar(char ch). Phương thức này rất hữu dụng cho những ô nhập password, không muốn người khác biết mình nhập gì, các ký tự hiện lên sẽ chỉ là dấu ‘* ‘ hoặc ký tự nào đó do mình định dạng trước. Ta cũng có thể xem được ký tự nào đang được sử dụng để hiển thị văn bản bằng phương thức public char getEchoChar()v Đặc điểm riêng của ô TextArea§ Đối tượng TextArea cũng có những đặc điểm riêng của mình. TextArea chủ yếu dùng để soạn thảo văn bản vì chúng nhập được nhiều dòng. Để phục vụ mục đích này lớp TextArea bổ xung các phương thức dùng để chèn (inserting), nối đuôi (appending) và thay thế (replacing) các chuỗi văn bản. Ta có thể đưa thêm một dòng vào TextArea băng phương thức: public appendText(String newText). Để chèn một chuỗi văn bản vào một chuỗi bất kỳ trong TextArea ta dùng phương thức; public void insertText(String newText, int pos) với phương thức này ta sẽ chèn newText và vị trí pos. Ta cũng có thể thay thế một đoạn văn bản trong TextArea bằng phương thức: public void replaceText(String newText, int start, int end) phương thức này ta sẽ thay thế chuỗi có vị trí bắt đầu là start và kết thúc tại vị trí end bằng newTextv Sử dụng TextField và TextArea§ Cũng tương tự như các thành phần Component khác, muốn lấy được sự thay đổi hay nội dung TextField hay TextArea ta cũng cài đặt interface Listener cụ thể ở đây là ActionListener để gán đối tượng xử lý tình huống vào văn bản, khi người dùng nhấn Enter thì tình huống này sẽ được gọiTextComponent examplepublic static void main(String args[])**//Tạo Frame và setLayoutTextField tf=new TextField(10);TextArea ta=new TextArea (5,40);tf.setEchoChar('*');ta.append("Day la chuoi van ban duoc appen TextArea");myWindow.add(tf);myWindow.add(ta);tf.addActionListener(new processText(ta));myWindow.show(); }class processText implements ActionListener{TextArea ta; processText(TextArea ta)**this.ta=ta; }public void actionPerformed(ActionEvent e)**ta.setText("Your password is:"+e.getActionCommand()); }}

Page 15: Java Button

Share o Share this post on

o Twitter

o Facebook

Đắng kí ngay để trả lời bài viết này  Lên Trên

24 August 2006 11:57 AM #5 anhsuytu Cựu Staff ScrollBar

§ Lớp Scrollbar cung cấp cho ta khả năng tạo được thanh trượt và xử lý chúng bằng nhiều phương thức khác nhau. Ta có thể đặt cho thanh trượt các giá trị giới hạn tối thiểu (min) và tối đa (max) cùng với vị trí hiện tại (current value) trên thành trượt. Thanh trượt được cập nhật theo 3 trạng thái sau:§ Line§ Page§ Absolute§ Khi người dùng knick chuột vào mũi tên ở hai đầu thì tình huống line xảy ra. Thanh trượt sẽ tự động cộng thêm hay trừ đi vào vị trí hiện tại một đơn vị ( mặc định là 1). Tình huống page nảy sinh khi người dùng knick chuột vào khoảng giữa thanh trượt và vị trí hiện hành. Vị trí hiện hành sẽ dời đi một số đơn vị do ta định nghỉa. Tình huống absolute xảy ra khi người dùng nắm vào nút tại vị trí hiện hành kéo nó đi. Để tạo thanh trượt ta làm như sau:§ public Scrollbar() : phương thức này sẽ tạo ra một Scrollbar nhưng không truyền vào tham số, các tham số này sẽ được xác lập, khai báo sau này.§ public Scrollbar(int orientation) : trong đó arientation sẽ nhận một trong các giá trị: Scrollbar.VERTICAL dùng để tạo thanh trượt đứng, Scrollbar.HORIZONTAL để tạo thanh trượt ngang. Ta cũng có thể tạn ra thành trược với đầy đủ các tham số như sau:§ public Scrollbar(int orientation, int pos, int pageUnit, int minValue, int maxValue) trong đó pageUnit là số đơn vị sẽ dời đi khi ta dùng phương thức page.§ Sử dụng thanh trượt§ Cũng giống như các thành phần AWT khác ta cũng sẽ đặt một Listener, ở đây là AdjustmentListener. Khi cài đặt interface AdjustmentListener thì cần cài đặt phương thức sau:§ public void adjustmentValueChanged(AdjustmentEvent evt)§ Đối tượng Scrollbar sẽ phát sinh 3 tình huống line, page, absolute. Đối tượng AdjustmentListener cung cấp cho ta hàm getAdjustmentType() để xác định xem tình huống nào đang xảy ra:§ AdjustmentEvent.UNIT_INCREMENT: Tình huống line xảy ra, vị trí hiện hành tăng thêm một đơn vị.§ AdjustmentEvent.UNIT_DECREMENT: Tình huống line xảy ra, vị trí hiện hành giảm đi một đơn vị§ AdjustmentEvent.BLOCK_INCREMENT :Tình huống page xả ra, vị trí hiện hành của

Page 16: Java Button

thanh trượt tăng thêm một đơn vị§ AdjustmentEvent.BLOCK.DECREMENT : Tình huống page xảy ra, vị trí hiện hành của thành trượt giảm đi một một đơn vị.§ Adjustment.Track : tinh huống absolute xảy ra, lấy vị trí thanh trượt bằng hàm getValue()§ Event.SCROLL_ABSOLUTE : Tình huống absolute xảy ra§ Event.SCROLL_LINE_DOWN, Event.SCROLL_LINE_UP: tình huống line xảy ra§ Event.SCROLL_PAGE_DOWN, Event.SCROLL_PAGE_UP: tình huống page xảy ra.§ Trong hầu hết các trường hợp, nhìn chung chúng ta chỉ cần quan tâm đến vị trí hiện hành mới của thanh trượt bằng cách gọi phương thức getValue() mà thôi (trừ khi ta muốn có những hiệu ứng phức tạp và cần phải quan tâm đến từng chi tiết của SCROLL)Scrollbar examplepublic static void main(String args[])**//Tạo Frame & setLayoutLabel status=new Label("Font size now is"); Scrollbar sc=new Scrollbar(Scrollbar.HORIZONTAL,0,1,0,10);myWindow.add(sc);myWindow.add(status);sc.addAdjustmentListener(new processScroll(status));myWindow.show(); }class processScroll implements AdjustmentListener{Label status; processScroll(Label status)**this.status=status; }public void adjustmentValueChanged(AdjustmentEvent e)**int n=e.getValue();Font f=new Font ("Times New Roman", Font.BOLD|Font.ITALIC,n);status.setFont(f);status.setText("Font size now is " +n); }}

MenuBar

§ Một thành phần khá quan trọng của các ứng dụng Windows mà hầu hết các ứng dụng đều có, đó chính là Menubar.§ Đối tượng Menubar có thể tạo một thanh trình đơn và gắn nó vào một Frame theo cách sau: Menubar app=new Menubar(); sau đó add vào Frame myWindow.setMenubar(app);§ Sau khi đã có menubar ta sẽ dùng đối tượng Menu để tạo ra các menu con gắn vào đó như sau: Menu fileMenu=new Menu(“File”); sau đó add vào thanh menubar cha:

Page 17: Java Button

§ app.add(fileMenu); Và sau khi đã có Menu con ta cần phải có các mục chọn gắn vào đó. Đối tượng MenuItem sẽ làm điều này. Ví dụ ta sẽ thêm mục chọn Save vào Menu con (có 2 cách thêm) :§ Đưa trực tiếp: fileMenu.add(new MenuItem(“Save”));§ Hoặc tạo từng mục chọn sau đó mới đưa vào: MenuItem saveItem=new MenuItem(“Save”);§ fileMenu.add(saveItem);§ Muốn tạo một MenuItem chìm (disable) thì ta sau khi tạo te sẽ dùng phương thức .enable() hoặc .disable() để thay đổi. Để mục chọn cho các MenuItem ta làm theo cách sau:§ Giả sử ta tạo một MenuItem “Save…” trong Save lại có 2 Item khác là Save và Save as:

§ MenuItem saveItem=new MenuItem(“Save…”);§ fileMenu.add(saveItem);§ saveItem.add(new MenuItem(“Save”);§ saveItem.add(new MenuItem(“Save as”);§ Để tạo một Item có khả năng đánh dấu (check), ví dụ “Auto save”. 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(“Auto save”);§ fileMenu.add(autoSave); Cũng gần giống như Checkbox, để xem trạng thái của CheckboxMenuItem ta dùng hàm getState()§ Sử dụng Menu:§ Vì Menubar là một thành phần nút nhấn có kiểu đặc biệt nên nó cũng sẽ cài đặt (implements) lớp ActionListener để “nghe ngóng” các sự kiện xảy ra.public class myMenu **public static void main(String args[])** Frame myWindow = new Frame("Menu Application"); Label status=new Label("Pleased select an item on menu");myWindow.add(status); MenuBar AppMenu =new MenuBar(); myWindow.setMenuBar(AppMenu);Menu FileMenu=new Menu("File"); AppMenu.add(FileMenu);MenuItem newItem=new MenuItem("New");MenuItem openItem=new MenuItem("Open");MenuItem saveItem=new MenuItem("Save"); CheckboxMenuItem AutosaveItem =new CheckboxMenuItem("Auto save"); AutosaveItem.setState(true); Menu printItem = new Menu("Print"); MenuItem Item1=new MenuItem("Print preview");MenuItem Item2=new MenuItem("to Printer"); printItem.add(Item1);printItem.add(Item2);

Page 18: Java Button

FileMenu.add(newItem);FileMenu.add(openItem);FileMenu.add(saveItem);FileMenu.add(AutosaveItem); FileMenu.addSeparator();FileMenu.add(printItem); newItem.addActionListener(new processItem(status)); openItem.addActionListener(new processItem(status));saveItem.addActionListener(new processItem(status));AutosaveItem.addActionListener(new processItem(status));Item1.addActionListener(new processItem(status));Item2.addActionListener(new processItem(status)); openItem.disable();myWindow.setSize(new Dimension(300, 100));myWindow.show();}}class processItem implements ActionListener{Label status;processItem(Label status)**this.status=status;}public void actionPerformed(ActionEvent evt)**if (evt.getSource() instanceof MenuComponent)**MenuItem Item= (MenuItem)evt.getSource(); status.setText("You have selected : "+Item.getLabel());}}}