Bài giảng Ngôn ngữ lập trình Java 2008

Đề tài 0. Giới thiệu về Java

I. Lịch sử hình thành và phát triển ngôn ngữ lập trình Java

I.1. Giới thiệu về Java

Java là một ngôn ngữ lập trình mạnh đang được sử dụng rất rộng rãi hiện nay trên toàn thế giới. Trên thực tế, Java được biết đến không chỉ là một ngôn ngữ lập trình mà là một platform – một môi trường và công nghệ phát triển – riêng biệt. Khi làm việc với Java, người lập trình được sở hữu một thư viện lớn, có tính mở với một lượng mã nguồn tái sử dụng khổng lồ luôn có trên internet. Ngoài ra, các chương trình viết bằng Java có môi trường thực thi riêng với các tính năng bảo mật, khả năng triển khai trên nhiều hệ điều hành khác nhau và nhiều tính năng ưu việt khác chúng ta sẽ xem xét trong phần sau.

 

doc146 trang | Chia sẻ: phuongt97 | Lượt xem: 286 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng Ngôn ngữ lập trình Java 2008, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
hông thể tìm thấy thông tin gì về máy tính cuc bộ, trừ các thông tin như phiên bản Java, tên và phiên bản hệ điều hành, ký tự phân tách file, đường dẫn. Applet không thể tìm thấy các thông tin cá nhân như email, password, Tất cả các cửa sổ trình duyệt có applet được tải về đều có thông báo. Những yêu cầu về an ninh của applet là rất quan trọng. Trong một số trường hợp ta có thể cấu hình để applet được tin cậy và có thể truy cập vào máy tính cục bộ giống như một chương trình đang chạy trên máy tính đó. Applet cũng có những khả năng như: Tạo kết nối đến máy đang chạy nó. Applet dễ dàng dùng các siêu văn bản hiển thị. Có thể gọi đến các phương thức toàn cục của các applet khác trên cùng trang web. Applet có thẻ giao tiếp với các applet khác trên trang web cũng như với các đối tượng khác trên trang web thông qua cơ chế riêng. Các applet được nạp từ hệ thống tập tin cục bộ sẽ không bị các giới hạn của các applet được nạp từ mạng xuống. Không nhất thiết là các applet sẽ ngừng lại khi ta thoát khỏi các trang web chứa nó. IV. Ứng dụng Applet với của sổ Popup Với Applet chúng ta hoàn toàn có thể có thêm các cửa sổ pop-up để mở rộng không gian làm việc. Sau đây là một Japplet có thể mở một Frame mới. import java.awt.*; import java.awt.event.*; import javax.swing.*; public class PopupCalculatorApplet extends JApplet { public void init() { // Tạo một frame với một cửa sổ panel final JFrame frame = new JFrame(); frame.setTitle("Calculator"); frame.setSize(200, 200); // Thêm một Button để ẩn/ hiện frame pop-up JButton calcButton = new JButton("Calculator"); add(calcButton); calcButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { frame.setVisible(!frame.isVisible()); } }); } } V. Các thẻ HTML của Applet Một khai báo applet trong trang HTML thường có dạng: Thong tin duoc hien thi khi applet khong hien thi Sau đây ta sẽ tìm hiểu các thuộc tính của applet: Các thuộc tính về vị trí: height: Chiều cao của applet. Các applet không thể thay đổi kích thước khi đã chạy. width: Chiều rộng của applet align: Xác định vị trí của applet so với các văn bản xung quanh nó. Các giá trị của align có thể là: left, right, middle, top, texttop, absmiddle, baseline, bottom, absbottom, vspace và hspace. Các thuộc tính về chương trình nguồn- code: code : Thuộc tính này cho biết tên của class chứa chương tình applet. Tên này là tương đối so với giá trị codebase hoặc với thư mục hiện hành nếu không có codebase. Đường dẫn phải phù hợp với đường dẫn gói của class applet. Ví dụ: nếu applet có tên MyApplet.class được đặt trong gói com.mycompany thì đường dẫn phải là: code="com/mycompany/MyApplet.class". hoặc: code="com.mycompany.MyApplet.class" cũng được chấp nhận. - codebase: Là một thuộc tính tùy chọn để xác định đường dẫn tuyệt đối nơi chứa class ở giá trị code. archive: Chứa tên các gói chương trình hoặc tài nguyên khác được tải về kèm theo applet. Các gói chương trình được nén ở dạng file JAR và được đặt cách nhau bởi dấu ,. Ví dụ: <applet code="CalculatorApplet.class" archive="CalculatorClasses.jar,corejava/CoreJavaClasses.jar" width="100" height="150"> object: Chứa tên file đã được tuần tự hóa của một applet. name: Tên của applet. Trong các trình duyệt của Netscape hoặt Windows đều cho phép applet giao tiếp với các đối tượng javascript khác trên trang web. Khi đó applet cần có tên để truy cập. Ngoài ra Java cho phép ta định nghĩa các tham số cho applet thông qua các thẻ Ví dụ: Khi đó trong chương trinh applet, ta có thể lấy ra để sử dụng: public class FontParamApplet extends JApplet { public void init() { String fontName = getParameter("font"); int fontSize = Integer.parseInt(getParameter("size")); . . . } } VI. Các phương thức, lập trình đồ họa và bắt sự kiện của applet public void paint(Graphics g) {...}: Là phương thức hiển thị cơ bản, thường các applet dùng paint() để biểu diễn các hoạt động của mình trên trang web. public void update(Graphics g) {...}: là phương thức ta dùng sau khi thực hiện pain() nhằm làm tăng hiệu quả vẽ. Ngoài ra Applet còn thừa hưởng các phương thức từ lớp AWT. Phương thức repaint() được dùng khi cửa sổ cần cập nhật lại. Phương thức này chỉ cần một tham số là đối tượng của lớp Graphics. getDocumentBase(): cho biết địa chỉ dạng URL của thư mục chứa tập tin HTML chứa applet. getCodeBase(): Cho biết địa chỉ dạng URL của thư mục chứa tập tin .CLASS của applet. getImage(URL url, String name): trả về một đối tượng ảnh hiển thị trên nền. getLocale(): Xác định vị trí applet. getAudioClip(URL url, String name): cho đối tuợng audio. showStatus(String st): hiển thị xâu st trên thanh trang thái. drawChars(char array[ ], int offset, int length, int xCoor, int yCoor): xuất các ký tự. Chú thích các tham số: array: Mảng các ký tự; offset: Vị trí bắt đầu, nơi các ký tự được vẽ.; length: Số các ký tự cần được vẽ; xCoor: Toạ độ X, nơi các ký tự cần được vẽ; yCoor: Toạ độ Y, nơi các ký tự cần được vẽ. drawBytes(byte array[ ], int offset, int length, int xCoor, int yCoor): xuất các byte ra.Trong đó array: Mảng các byte.;Vị trí offset hay vị trí bắt đầu; length: Số byte cần vẽ; xCoor: Toạ độ X; yCoor: Toạ độ Y. drawLine(int x1, int y1, int x2, int y2): Vẽ đường thẳng từ A(x1, y1) đến B(x2, y2). drawOval(int xCoor, int yCoor, int width, int height): Vẽ đường oval. fillOval(int xCoor, int yCoor, int width, int height): Vẽ hình oval đặc.Trong đó: width là Chiều rộng của hình, height là Chiều cao của hình. drawRect(int xCoor, int yCoor, int width, int height): Vẽ hình chữ nhật. fillRect(int xCoor, int yCoor, int width, int height): Vẽ hình chữ nhật đặc. drawRoundRect(int xCoor, int yCoor, int width, int height, int arcwidth, int archeight): Vẽ hình chữ nhật có bo góc. fillRoundRect(int xCoor, int yCoor, int width, int height, int arcwidth, int archeight): vẽ hình chữ nhật bo góc đặc. Trong đó: arcwidth: làm tròn góc trái và góc phải của hình chữ nhật. archeight: làm tròn góc trên đỉnh và góc đáy của hình chữ nhật. Ví dụ, arcwidth = 20 có nghĩa là hình chữ nhật được làm tròn cạnh trái và cạnh phải mỗi cạnh 10 pixel. draw3Drect(int xCoord, int yCoord, int width, int height, boolean raised): Vẽ hình chữ nhật 3D. drawArc(int xCoord, int yCoord, int width, int height, int arcwidth, int archeight): Vẽ hình cung. fillArc(int xCoord, int yCoord, int width, int height, int arcwidth, int archeight): Vẽ hình cung đặc. Trong đó: xCoord: Toạ độ x; yCoord: Toạ độ y. width: Chiều rộng của cung được vẽ; height: Chiều cao của cung được vẽ. arcwidth: Góc bắt đầu; archeight: Độ rộng của cung (góc của cung) so với góc ban đầu. drawPolyline(int xArray[ ], int yArray[ ], int totalPoints): Vẽ nhiều đường thẳng Trong đó: xArray: Mảng lưu trữ toạ độ x của các điểm; yArray: Mảng lưu trữ toạ độ y của các điểm; totalPoints: Tổng số điểm cần vẽ. setFont(new Font(“Times Roman”, Font.BOLD, 15)): Đặt Font cho chữ, (Font.BOLD, Font.PLAIN, Font.ITALIC) drawPolygon(int x[ ], int y[ ], int numPoints):Vẽ đa giác. fillPolygon(int x[ ], int y[ ], int numPoints): Vẽ đa giác đặc. Trong đó: x[ ]: Mảng lưu trữ toạ độ x của các điểm; y[ ]: Mảng lưu trữ toạ độ y của các điểm; numPoints: Tổng số điểm cần vẽ; setColor(Color c): Đặt màu vẽ. Bảng một số màu cơ bản: Color.white Color.black Color.orange Color.gray Color.lightgray Color.darkgray Color.red Color.green Color.blue Color.pink Color.cyan Color.magenta Color.yellow Đề tài 10. Lập trình giao diện đồ họa GUI I. Giới thiệu AWT Abstract Windows Toolkit – AWT: Là thư viện của Java cung cấp cho lập trình viên các giải pháp giao diện người dùng đồ hoạ (Graphical User Interface - GUI) thân thiện. Một giao diện người dùng được hình thành từ các phần tử của GUI. Một phần tử GUI được thiết lập bằng cách sử dụng các thủ tục: Tạo đối tượng. Xác định sự xuất hiện ban đầu của đối tượng. Chỉ ra nó nằm ở đâu. Thêm phần tử vào giao diện trên màn hình. Để làm việc với các đối tượng GUI chúng ta cần nhập gói java.awt.*. AWT cung cấp các thành phần khác nhau để tạo GUI hiệu quả, các thành phần này có thể là: Vật chứa (Container). Thành phần (Component). Trình quản lý cách trình bày (Layout manager). Đồ hoạ (Graphics) và các tính năng vẽ (draw). Phông chữ (Font). Sự kiện (Event). Từ phiên bản 1.4, Java phát triển một thư viện mở rộng mới với đa số các lớp GUI kế thừa từ AWT nhưng có khả năng di động tốt hơn. Các lớp GUI trong swing có thêm tiền tố “J” so với các lớp trong AWT. Sau đây, chúng ta sẽ xét các thành phần GUI trong swing. Sơ đồ phân cấp thừa kế các đối tượng GUI trong swing như sau: II. Vật chứa (Container) Là vùng mà ta có thể đặt các thành phần (component) của giao diện. Một vật chứa có thể chứa nhiều phần tử. Vật chứa thường được sử dụng là: JPanel - khung chứa đơn giản nhất, để nhóm các đối tượng con lại và sắp xếp theo cách thích hợp. JFrame - là một cửa sổ như mọi ứng dụng của windows, để tạo các ứng dụng windows. JDialogs - là cửa sổ nhưng không đầy đủ chức năng như Frame, nó là cửa sổ hộp thoại đưa ra những lời thông báo. JScrollPanel - khung chứa như Panel nhưng có hai thanh trượt. II.1 JFrame Tạo đối tượng khung chứa JFrame bằng phương thức khởi tạo: void JFrame(); Tạo Frame với tiêu đề bên trên: void JFrame(String FrameTitle); Ví dụ: JFrame frame1 = new JFrame(); JFrame frame2 = new JFrame("Cua so Frame"); import javax.swing.*; public class FrameSample { public static void main(String[] argvs) { JFrame f = new JFrame(); f.setSize(400,400); f.setVisible(true); } } Một số phương thức hay sử dụng: Đặt lại kích thước cho JFrame: frame1.setSize(int width, int height); Đưa cửa sổ hiện ra màn hình: frame1.show(); frame1.setVisible(boolean b); trong đó: b = true cho hiển thị, b = false cho ẩn. Bỏ hoàn toàn đối tượng JFrame: frame1.dispose(); Thay đổi tiêu đề cho JFrame: frame1.setTitle(String newTitle); Lấy tiêu đề của JFrame: public String getTitle(); Co dãn JFrame: public void setResizable(boolean b); trong đó: b = true thì Frame có thể thay đổi kích thước, b = false thì không đổi. Xác định JFrame đang ở tình trạng nào: public boolean isResizable(); Thay đổi biểu tượng JFrame: public setIconImage(Image img); II.2 JPanel JPanel không thể nhìn thấy trực tiếp, nó là đối tượng dùng để chứa các thành phần GUI trên màn hình. Do đó chúng ta cần gắn JPanel vào đối tượng nào đó như: JFrame, JApplet, ... Tạo khung chứa JPanel bằng phương thức khởi tạo: JPanel panel1 = new JPanel(); Ví dụ sau tạo một đối tượng JPanel và đặt vào nó một đối tượng nút bấm JButton. import javax.swing.*; public class FrameSample { public static void main(String[] argvs) { JFrame f = new JFrame(); JPanel p = new JPanel(); p.add(new JButton("OK")); f.add(p); // gắn JPanel vào JFrame f.setSize(400,400); f.setVisible(true); } } II.3 JDialog Như JFrame, nhưng ít chức năng hơn, còn được gọi là popup-window. Ta có thể tạo JDialog dưới hai hình thức: modal: là cửa sổ JDialog khi thực hiện sẽ khoá chặt các cửa sổ khác. Cửa sổ này thường yêu cầu một tác vụ nào đó cần phải hoàn thành ngay. non-modal: ngược lại với modal, cửa sổ này thích ứng với các thao tác mang tính tuỳ biến. Cách tạo khung chứa JDialog từ phương thức khởi tạo: public JDialog(JFrame parentWindow, boolean isModal); trong đó: isModal - quyết định xem JDialog được tạo ra ở dạng nào: isModal = true cho modal còn isModal = false cho non-modal. Ví dụ: JDialog myDialog = new JDialog(myWindow, true) Tạo JDialog có tiêu đề định trước: public JDialog(Frame parentWindow, String title, boolean isModal) JDialog không thể gắn với Applet, muốn đưa ra một JDialog từ JApplet ta phải tạo ra một JFrame giả tạo. Đưa đối tượng JDialog ra màn hình bằng phương thức show(). Giấu cửa sổ JDialog ta dùng phương thức: hide(). Ẩn hiện JDialog ta còn có phương thức: setVisible(boolean). Các đặc điểm thường sử dụng với đối tượng JDialog thể hiện tương tự với JFrame. Lấy và thay đổi kích thước JDialog: public setResizable(boolean), boolean isResizable() Đặt và lấy tiêu đề của JDialog: void setTitle(String), String getTitle(); Xác minh một JDialog đang thuộc dạng nào ta gọi phương thức: public boolean isModal() Chương trình sau đây sẽ ẩn hoặc hiện một Jdialog mỗi khi nhất vào một nút bấm: import javax.swing.*; import java.awt.*; import java.awt.event.*; public class FrameSample extends JFrame { private JDialog d; public FrameSample() // Constroctor { d = new JDialog(this,"Day la Jdialog",false); d.setSize(100,100); JPanel p = new JPanel(); JButton b = new JButton("Xem/Tat mot JDialog"); b.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { d.setVisible(!d.isVisible()); } } ); p.add(b); add(p); } public static void main(String[] argvs) { FrameSample fs = new FrameSample(); fs.setSize(400,400); fs.setVisible(true); } } II.4 JScrollPane Đây không phải là một cửa sổ nhưng có tính chất như khung chứa JPanel dùng để chứa các đối tượng. Tính chất khác là khi đối tượng nó chứa quá lớn thì JScrollPane sẽ xuất hiện thanh trượt đứng và ngang ở hai bên viền để ta có thể xem được toàn bộ. JScrollPane được ứng dụng trong các danh sách chọn. III. Giới thiệu về các thành phần GUI cơ bản Jlabel: Chỉ một vùng hiển thị văn bản hoặc các icon. JtextField: Chỉ một đối tượng cho phép nhập dữ liệu từ bàn phím. JButton: Đối tượng nút bấm JcheckBox: Đối tượng nút chọn. JcomboBox: Đối tượng ComboBox Jlist: Danh sách JPanel: Nơi đặt các thành phần GUI nói trên. III.1 Nút nhấn Cách tạo nút nhấn Ta gọi phương thức khởi dựng: public Button(String label) label là tên nhãn của nút nhấn Ví dụ: Button nutOK = new Button("OK"); Đư nút nhấn vào Applet hay cửa sổ chương trình bằng lệnh: add(nutOK); Để đổi tên nhãn cho nút nhấn ta gọi phương thức public void setLabel(String newLabel). Để xem tên nhãn hiện tại của nút nhấn, ta gọi phương thức public String getLabel() Ví dụ: Button nutOK = new Button(); nutOK.setLabel("OK"); Sử dụng nút nhấn Khi kích chuột vào nút nhấn sẽ thực hiện một công việc nào đó. Vấn đề này chúng ta đã xem xét trong phần xử lý các sự kiện III.2 Nhãn (Label) Tạo nhãn không có nội dung gì: public Label() hoặc tạo nhãn có nội dung: public Label(String nameLabel). hoặc thêm chế độ căn lề: pubic Label(String name, int align) Một số phương thức hay sử dụng: setText(String nameLabel): Đặt lại nội dung mới cho nhãn. Label.CENTER, Label.LEFT, Label.RIGHT: những giá trị căn lề. Lấy nội dung hiện hành của nhãn: public String getText(); Xem nhãn đang được căn lề ở chế độ nào: public int getAlignment(); Thiết lập lại chế độ căn lề: public void setAlignment(int align) throws IlligalArgumentException Sau đây là ví dụ sử dụng JLabel: // Minh họa về JLabel // Nhập các gói thư viện import java.awt.*; import java.awt.event.*; // Gói Java mở rộng import javax.swing.*; public class LabelTest extends JFrame { private JLabel label1, label2, label3; // Tạo giao diện GUI public LabelTest() { super( "Testing JLabel" ); // Contructor của JFrame // Lấy đối tượng pane của một JFrame Container container = getContentPane(); container.setLayout( new FlowLayout() ); // constructor của JLabel label1 = new JLabel( "Label with text" ); label1.setToolTipText( "This is label1" ); // hiển thị khi di chuột đến container.add( label1 ); // thêm vào container // Tạo Jlabel với icon hoặc text Icon bug = new ImageIcon( "bug1.gif" ); label2 = new JLabel( "Label with text and icon", bug, SwingConstants.LEFT ); label2.setToolTipText( "This is label2" ); container.add( label2 ); // JLabel không tham số label3 = new JLabel(); label3.setText( "Label with icon and text at bottom" ); label3.setIcon( bug ); label3.setHorizontalTextPosition( SwingConstants.CENTER ); label3.setVerticalTextPosition( SwingConstants.BOTTOM ); label3.setToolTipText( "This is label3" ); container.add( label3 ); setSize( 275, 170 ); setVisible( true ); } // hàm main public static void main( String args[] ) { LabelTest application = new LabelTest(); application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } } III.3 Nút đánh dấu (checkbox) Một nút đánh dấu có hai phần: nhãn và dấu biểu hiện trạng thái. Ta có thể tạo nút đánh dấu theo 5 phương thức khởi dựng: public Checkbox(): tạo ô đánh dấu không có nhãn. public Checkbox(String cbLabel): tạo ô đánh dấu với một nhãn cbLabel gắn kèm. public Checkbox(String cbLabel, boolean state): Tạo ô đánh dấu với một nhãn cbLabel gắn kèm với trạng thái ban đầu của ô đó. public Checkbox(String cbLabel, boolean state, CheckboxGroup g); public Checkbox(String cbLabel , CheckboxGroup g, boolean state): dùng để tạo ô đánh dấu có nhãn với trạng thái đánh dấu ban đầu, nút tạo ra được nhóm trong nhóm g. Nhóm các ô đánh dấu trở thành nút chọn. Kiểm tra và thiết lập trạng thái: Để kiểm tra một ô có được đánh dấu không ta dùng phương thức: public boolean getState(); Nếu muốn thiết lập trạng thái, ta dùng phương thức: setState(boolean state). Xử lý tình huống khi ô đánh dấu thay đổi trạng thái: Để lắng nghe ô đánh dấu, ta dùng phương thức: addItemListener(ItemListener L) Để loại bỏ lắng nghe đó ta dùng phương thức: removeItemListener(ItemListener L) // Java core packages import java.awt.*; import java.awt.event.*; // Java extension packages import javax.swing.*; public class CheckBoxTest extends JFrame { private JTextField field; private JCheckBox bold, italic; // Thiết lập GUI public CheckBoxTest() { super( "JCheckBox Test" ); // lấy pane Container container = getContentPane(); container.setLayout( new FlowLayout() ); // Đặt ô nhập và font chữ field = new JTextField( "Theo dõi font chữ thay đổi", 20 ); field.setFont( new Font( "Serif", Font.PLAIN, 14 ) ); container.add( field ); // tạo đối tượng checkbox bold = new JCheckBox( "Bold" ); container.add( bold ); italic = new JCheckBox( "Italic" ); container.add( italic ); // Đăng ký đối tượng lắng nghe CheckBoxHandler handler = new CheckBoxHandler(); bold.addItemListener( handler ); italic.addItemListener( handler ); setSize( 275, 100 ); setVisible( true ); } // execute application public static void main( String args[] ) { CheckBoxTest application = new CheckBoxTest(); application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } // Lớp nội lắng nghe sự kiện private class CheckBoxHandler implements ItemListener { private int valBold = Font.PLAIN; private int valItalic = Font.PLAIN; // Đáp ứng sự kiện chọn ô public void itemStateChanged( ItemEvent event ) { // xử lý chọn ô chữ đậm if ( event.getSource() == bold ) if ( event.getStateChange() = = ItemEvent.SELECTED ) valBold = Font.BOLD; else valBold = Font.PLAIN; // Chọn ô chứ nghiêng if ( event.getSource() == italic ) if ( event.getStateChange() == ItemEvent.SELECTED ) valItalic = Font.ITALIC; else valItalic = Font.PLAIN; // Đặt lại font chữ của ô text field.setFont(new Font( "Serif", valBold + valItalic, 14 ) ); } } } III.4 Nút chọn (radio button) Tạo nút chọn: Đây là trường hợp đặc biệt của ô đánh dấu. Ta tạo ra ô đánh dấu và đặt nó vào một nhóm, ta có phương thức sau: public CheckboxGroup(); Với một nhóm các nút ta có thể lấy ra đối tượng hiện tại đang được chọn bằng cách gọi phương thức getSelectedCheckbox(). Đặt lựa chọn ta dùng: setSelectedCheckbox(). Cách sử dụng nút chọn: Ta tạo một đối tượng giao tiếp ItemListener để lắng nghe tình huống. Phương thức getItemSelectable sẽ trả về đối tượng nơi mà tình huống phát sinh: public ItemSelectable getItemSelectable(); Phương thức getItem của đối tượng ItemEvent sẽ cho ta biết giá trị nút chọn: public Object getItem(); Sau đây là ví dụ về sử dụng ô chọn: // Đăng ký đối tượng lắng nghe cho mỗi ô chọn radio RadioButtonHandler handler = new RadioButtonHandler(); plainButton.addItemListener( handler ); boldButton.addItemListener( handler ); italicButton.addItemListener( handler ); boldItalicButton.addItemListener( handler ); // Nhóm các ô lại radioGroup = new ButtonGroup(); radioGroup.add( plainButton ); radioGroup.add( boldButton ); radioGroup.add( italicButton ); radioGroup.add( boldItalicButton ); Về bắt các sự kiện cũng tương tự ô đánh dấu. III.5 Hộp thoại Combo Java hỗ trợ hộp thoại Combo thông qua đối tượng của class JComboBox. Đây là một danh sách xổ xuống, đưa ra một danh sách các mục và ta chỉ được chọn 1 mục trong đó. JComboBox cũng phát sinh sự kiện ItemEvent giống như JRadioButton và JCheckBox. Chương trình sau đây minh họa việc sử dụng JComboBox với các phần tử là các ảnh GIF. // Java core packages import java.awt.*; import java.awt.event.*; // Java extension packages import javax.swing.*; public class ComboBoxTest extends JFrame { private JComboBox imagesComboBox; private JLabel label; private String names[] = { "bug1.gif", "bug2.gif", "travelbug.gif", "buganim.gif" }; private Icon icons[] = { new ImageIcon(names[0]), new ImageIcon(names[1]), new ImageIcon(names[2]), new ImageIcon(names[3])}; // Thiết lập GUI public ComboBoxTest() { super( "Testing JComboBox" ); // Đặt layout Container container = getContentPane(); container.setLayout( new FlowLayout() ); // khởi tạo combo imagesComboBox = new JComboBox( names ); imagesComboBox.setMaximumRowCount( 3 ); imagesComboBox.addItemListener( new ItemListener() { // bắt sự kiện public void itemStateChanged( ItemEvent event ) { // liệu có phần tử được chọn if ( event.getStateChange() == ItemEvent.SELECTED ) label.setIcon( icons[imagesComboBox.getSelectedIndex() ] ); } } ); container.add( imagesComboBox ); // đặt một JLabel hiển thi ImageIcons tương ứng label = new JLabel( icons[ 0 ] ); container.add( label ); setSize( 350, 100 ); setVisible( true ); } // hàm main public static void main( String args[] ) { ComboBoxTest application = new ComboBoxTest(); aplication.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } } III.6 Danh sách (Lists) Lớp List cho phép ta tạo một danh sách các phần tử cho ta lựa chọn Tạo một danh sách: Phương thức khởi dựng mặc định: public List(). vd: List list = new List(); hoặc để chỉ định bao nhiêu phần tử sẽ được hiển thị cùng một lúc trong danh sách: public List(int rows) hoặc tạo một danh sách cho phép lựa chọn nhiều phần tử cùng một lúc: public List(int rows, boolean multiMode) Sử dụng danh sách chọn: Đưa từng phần vào danh sách bằng lệnh add(String item).vd: list.add("Mau do"); Chèn một phần tử vào danh sách bằng phương thức add(String item, int index), index là vị trí phần tử mà ta muốn chèn. Thay thế một phần tử ở vị trí pos bằng phần tử mới: replaceItem(String newItem, int pos) vd: list.replaceItem("Xanh", 4); Loại bỏ một phần tử trong danh sách ta dùng phương thức remove(int pos). Loại bỏ hết danh sách: removeAll(). Trả về vị trí của phần tử được chọn, nếu không có phần tử nào được chọn thì giá trị sẽ là -1: getSelectedIndex(). Nếu được chọn nhiều thì dùng: int[] getSelectedIndex() Lấy ra phần tử được chọn: getSelectedItem(). Chọn nhiều thì dùng: String[] getSelectedItem(). Để chọn một phần tử mà ta biết vị trí: select(int index) Nếu phần tử đang ở trạng thái chọn chuyển sang trạng thái bình thường: deselect(int index) Trạng thái của một phần tử: isSelected(int index) Chuyển chế độ đơn chọn sang đa chọn: setMultiplesSelections(boolean bl) Cho biết một danh sách là đơn chọn hay đa chọn: boolean isMultipleMode(). Sử dụng đối tượng danh sách: Cài đặt giao tiếp ItemListener để tạo đố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. Sử dụng đối số ItemEvent trong phương thức itemStateChange để biết được chỉ số của phần tử đang thay đổi trạng thái. Để xử lý được tình huống nhấp đôi chuột, ta cài đặt giao tiếp ActionListener và gắn nó vào danh sách. Phương thức getActionCommand() trong ActionEvent sẽ trả về tên của phần tử bị nhấp. // Java core packages import java.awt.*; // Java extension packages import javax.swing.*; import javax.swing.event.*; public class ListTest extends JFrame { private JList colorList; private Container container; private String colorNames[] = { "Black", "Blue", "Cyan", "Dark Gray", "Gray", "Green", "Light Gray", "Magenta", "Orange", "Pink", "Red", "White", "Yellow" }; private Color colors[] = { Color.black, Color.blue, Color.cyan, Color.darkGray, Color.gray, Color.green, Color.lightGray, Color.magenta, Color.orange, Color.pink, Color.red, Color.white, Color.yellow }; // Thiết lập GUI public ListTest() { super( "List Test" ); // lấy layout container = getContentPane(); container.setLayout( new FlowLayout() ); // Tạo danh sách colorList = new JList( colorNames ); colorList.setVisibleRowCount( 5 ); // Không cho chọn nhiều colorList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION ); // thêm một JScrollPane ch

Các file đính kèm theo tài liệu này:

  • docbai_giang_ngon_ngu_lap_trinh_java_2008.doc
Tài liệu liên quan