Bài tập lập trình thực hành Java. Phần I Java applet Bài tập mẫu để hiểu các thành phần cơ bản của một Javaapplet. Mục đích: Học viên nắm đ ợc các thành phần cơ bản của một Applet đơn giản. Sau đó dựa vào applet này phát triển các applet t ơng tự. Nội dung: Một applet có nhiệm vụ vẽ một hình chữ thập qua tâm applet.
Thực hành Java Phần I Java applet 1. Bài tập mẫu để hiểu các thành phần cơ bản của một Java-applet. Mục đích: Học viên nắm đợc các thành phần cơ bản của một Applet đơn giản. Sau đó dựa vào applet này phát triển các applet tơng tự. Nội dung: Một applet có nhiệm vụ vẽ một hình chữ thập qua tâm applet. Mã ch ơng trình mẫu : import java.applet.*; import java.awt.*; public class MyApplet1 extends Applet { String text; public void paint(Graphics g) { Dimension d = getSize(); g.setColor(Color.blue); g.drawLine(0, d.height / 2, d.width -1, d.height /2); g.drawLine(d.width / 2, 0, d.width / 2, d.height -1); } } 2. Dựa vào bài tập mẫu 1, viết một applet hiển thị đồ thị một hàm số. Mục đích: Hiểu kỹ hơn applet ở bài tập 1 và làm quen với cách thể hiện chơng trình trong Java. Hàm số cần thể hiện đồ thị: cos(x/5) + sin(x/7) + 2) * H / 4 với H là chiều cao của applet Lời giải: import java.applet.*; import java.awt.*; public class MyApplet1 extends Applet { double f(double x) { return (Math.cos(x/5) + Math.sin(x/7) + 2) * getSize().height / 4; } public void paint(Graphics g) { g.setColor(Color.blue); for (int x = 0 ; x < getSize().width ; x++) { g.drawLine(x, (int)f(x), x + 1, (int)f(x + 1)); } } } 3. Bài tập mẫu sử dụng khả năng vẽ các chuỗi ký tự trên applet và khả năng truy cập tham số truyền từ trang web cho applet. Mục đích: Học viên có thể viết các applet hiển thị các chuỗi ký tự với kích cỡ font chữ kiểu font chũ tuỳ chọn,và đọc các tham số từ trang Web truyền cho applet. Nội dung: Applet hiển thị nội dung văn bản truyền qua tham số Text truyền cho applet qua trang web. Nếu không có tham số này, chọn chuỗi hiển thị mặc định là VITTI. Dòng chữ cần hiển thị đợc căn vào giữa applet. Mã ch ơng trình mẫu : import java.applet.*; import java.awt.*; public class MyApplet3 extends Applet { String text; public void init() { text = getParameter("Text"); if (text==null) text="VITTI"; } public void paint(Graphics g) { Font f = new Font("Helvetica", Font.BOLD, 20); g.setFont(f); FontMetrics fm = g.getFontMetrics(f); g.setColor(Color.red); g.drawString(text, (getSize().width - fm.stringWidth(text))/2, (getSize().height - fm.getHeight())/2); } } 4. Dựa vào bài mẫu 3, viết một applet hiển thị một đoạn văn bản truyền cho applet qua trang Web, và chuỗi ký tự đợc hiển thị trên đờng chéo. Mục đích: Hiểu kỹ hơn applet ở bài tập 3 và làm quen với cách thể hiện chơng trình trong Java. Hàm số của đờng chéo hiển thị chuỗi ký tự y = 300 - x Lời giải: import java.awt.*; public class MyApplet4 extends Applet { String text; int f(int x) { return 300-x; } public void init() { text = getParameter("Text"); if (text==null) text="VITTI"; } public void paint(Graphics g) { Font f = new Font("Helvetica", Font.BOLD, 20); g.setFont(f); FontMetrics fm = g.getFontMetrics(f); g.setColor(Color.red); int a=100; for (int i=0;i<text.length();i++) { Character ch=new Character(text.charAt(i)); g.drawString(ch.toString(), a, f(a)); a+=fm.charWidth(text.charAt(i)); } } } 5. Bài tập mẫu thẻ hiện khả năng tơng tác với ngời sử dụng của một applet Mục đích: Học viên biết cách xây dựng một applet có khả năng tơng tác với NSD qua các đối tợng nh nút bấm (button), hộp văn bản (textbox), Hiểu đợc cách lập trình cho các đối tợng tơng tác này. Nội dung: Applet có các hộp thoại cho phép NSD nhập hai toạ độ x và y và nhập một chuỗi văn bản tuỳ ý qua 3 hộp thoại trong applet. Khi NSD ấn nút SetText, applet sẽ hiển thị chuỗi văn bản đã nhập trên applet tại toạ độ (x,y) Mã ch ơng trình mẫu : import java.applet.*; import java.awt.*; public class MyApplet5 extends Applet { public void init() { Panel p = new Panel(); p.setLayout(new FlowLayout()); putText = new Button("Set Text"); p.add(putText); xField = new TextField("0", 3); p.add(xField); yField = new TextField("0", 3); p.add(yField); contentField = new TextField("Vien DTCNTT",15); p.add(contentField); paintCanvas = new PaintCanvas(); setLayout(new BorderLayout()); add("Center", paintCanvas); add("South", p); } public boolean action(Event evt, Object arg) { if (arg.equals("Set Text")) { paintCanvas.setData( Integer.parseInt(xField.getText()), Integer.parseInt(yField.getText()), contentField.getText()); paintCanvas.repaint(); } else return false; return true; } private TextField xField, yField; private TextField contentField; private Button putText; private PaintCanvas paintCanvas; private Panel p; } class PaintCanvas extends Canvas { public void paint(Graphics g) { g.setColor(Color.yellow); g.fillRect(0,0,getSize().width, getSize().height); g.setColor(Color.red); g.drawString(textContent, x, y); } public void setData(int x, int y, String text) { this.x = x; this.y = y; textContent = text; } private int x,y; private String textContent; } 6. Bài tập mẫu thể hiện khả năng điều khiển chuột trong một applet. Mục đích: Học viên biết cách chặn và lập trình các sự kiện liên quan đến con chuột để có thể tự xây dựng các ứng dụng tơng tác sử dụng chuột. Nội dung: Applet hiển thị toạ độ x,y của con chuột trong khi NSD di chuột trên applet. Mã ch ơng trình mẫu : import java.applet.*; import java.awt.*; public class MyApplet6 extends Applet { public void paint(Graphics g) { g.drawString(Integer.toString(x),10,10); g.drawString(Integer.toString(y),10,30); } public boolean mouseMove(Event evt, int x, int y) { this.x = x; this.y = y; repaint(); return true; } private int x,y; } 7. Bài tập áp dụng cả 2 bài 5,6 để xây dựng một applet chặn các sự kiện của chuột và hiển thị nội dung văn bản tại toạ độ chuột. Mục đích: Học viên hiểu rõ 2 bài tập 5,6 để xây dựng một bài tập kết hợp nội dung cả 2 bài trên. Nội dung: Applet có khả năng hiển thị toạ độ con chuột trong 2 hộp thoại khi NSD di chuột trong applet. Khi NSD ấn chuột trong applet, applet sẽ hiển thị một chuỗi văn bản tại vị trí ấn chuột. Chuỗi văn bản này NSD có thể tuỳ biến qua một hộp thoại cho phép nhập liệu. Lời giải: import java.applet.*; import java.awt.*; public class MyApplet7 extends Applet { public void init() { Panel p = new Panel(); p.setLayout(new FlowLayout()); xField = new TextField("", 3); p.add(xField); yField = new TextField("", 3); p.add(yField); contentField = new TextField("Vien DTCNTT",15); p.add(contentField); paintCanvas = new MyPaintCanvas(); paintCanvas.setData(xField, yField, contentField); setLayout(new BorderLayout()); add("Center", paintCanvas); add("South", p); } private TextField xField, yField, contentField; private Button putText; private MyPaintCanvas paintCanvas; private Panel p; } class MyPaintCanvas extends Canvas { public void setData(TextField x, TextField y, TextField t) { xField = x; yField = y; text = t; } public void paint(Graphics g) { g.setColor(Color.yellow); g.fillRect(0,0,getSize().width, getSize().height); g.setColor(Color.red); g.drawString(text.getText(), x, y); } public boolean mouseMove(Event evt, int x, int y) { xField.setText(Integer.toString(x)); yField.setText(Integer.toString(y)); return true; } public boolean mouseDown(Event evt, int x, int y) { this.x = x; this.y = y; repaint(); return true; } int x,y; TextField xField, yField, text; } 8. Bài tập mẫu thể hiện khả năng tơng tác với NSD qua hộp thoại (Dialog) từ trong một applet. Mục đích: Học viên biết cách xây dựng các applet tơng tác với các hộp thoại để mở rộng hơn nữa khả năng của applet. Nội dung: Applet có 1 chuỗi văn bản và 1 nút bấm. Khi NSD ấn nút này, một hộp thoại hiện ra. Khi NSD đóng hộp thoại này lại, chuỗi văn bản trên applet thay đổi để báo applet biết NSD đã đóng hộp thoại. Mã ch ơng trình mẫu : import java.applet.*; import java.awt.*; public class MyApplet8 extends Applet { public void init() { Panel p = new Panel(); p.setLayout(new FlowLayout()); p.add(message = new Label("Press this button ")); p.add(new Button("Open About Dialog")); setLayout(new BorderLayout()); add("North", p); } public boolean action(Event evt, Object arg) { if(arg.equals("Open About Dialog")) { AboutDialog ab = new AboutDialog(this); ab.show(); } else return false; return true; } public void processData() { message.setText("Button was pressed."); } Frame p; Label message; } class AboutDialog extends Frame { public AboutDialog(MyApplet8 parent) { this.parent = parent; setTitle("About MyApplet8"); Panel p1 = new Panel(); p1.setLayout(new GridLayout(2,1)); p1.add(new Label("Vien Dao tao CNTT")); p1.add(new Label("Ha Noi, 1/2000")); add("Center", p1); Panel p2 = new Panel(); p2.add(new Button("Ok")); add("South", p2); setSize(220, 150); } public boolean action(Event evt, Object arg) { if (arg.equals("Ok")) { parent.processData(); dispose(); return true; } return false; } public boolean handleEvent(Event evt) { if (evt.id == Event.WINDOW_DESTROY) System.exit(0); return super.handleEvent(evt); } MyApplet8 parent; } 9. áp dụng bài tập 8 để xây dựng một applet tơng tác với hộp thoại. Mục đích: Hiểu rõ cách xây dựng một applet cho phép NSD tơng tác với hộp thoại và nhận thông tin từ hộp thoại chuyển về cho applet. Nội dung: Applet có một nút bấm và một hộp văn bản. Nút bấm sẽ cho phép NSD nhập thông tin vào các dòng văn bản của hộp thoại. Sau khi đóng hộp thoại, hộp văn bản trên Applet sẽ hiển thị nội dung các dòng văn bản NSD đã nhập, chứng tỏ có đã truyền đợc thông tin từ hộp thoại đến applet. Lời giải: import java.applet.*; import java.awt.*; public class MyApplet9 extends Applet { public void init() { Panel p = new Panel(); p.setLayout(new GridLayout(2,1)); p.add(new Button("Open About Dialog")); p.add(message = new TextField("",30)); setLayout(new BorderLayout()); add("North", p); } public boolean action(Event evt, Object arg) { if(arg.equals("Open About Dialog")) { AboutDialog ab = new AboutDialog(this); ab.show(); } else return false; return true; } public void processData(String name, String place) { message.setText(name + " is living in " + place); } Frame p; TextField message; } class AboutDialog extends Frame { public AboutDialog(MyApplet9 parent) { this.parent = parent; setTitle("About MyApplet8"); Panel p1 = new Panel(); p1.setLayout(new GridLayout(2,2)); p1.add(new Label("Enter name")); p1.add(name = new TextField("", 10)); p1.add(new Label("Place")); p1.add(place = new TextField("", 10)); add("Center", p1); Panel p2 = new Panel(); [...]... ngôn ngữ Java - JDBC driver - Pure JDBC driver - JDBC-ODBC bridge - Package hỗ trợ JDBC trong Java : java. sql - Các phiên bản JDBC phổ biến : JDBC 1 và JDBC 2.0 - Cách cấu hình một ODBC-DSN trên Windows để sử dụng kết nối JDBC-ODBC try xuất dữ liệu 1 Bài tập mẫu thẻ hiện khả năng truy xuất dữ liệu qua kết nối JDBC-ODBC từ một ứng dụng Java Mục đích: Học viên biết cách kết nối một ứng dụng Java với... vào bài 1 và bài 2, bổ sung thêm tính năng cập nhật dữ liệu cho CSDL Mục đích: Hiểu đợc bài 1 và 2, qua đó xây dựng một ứng dụng Java nhỏ có thể kết nội và truy xuất, cập nhật DL nh các ứng dụng trong thực tế Nội dung: Ngoài khả năng duyệt bản ghi nh bài 2, cho phép NSD cập nhật dữ liệu ( thêm bản ghi) Kết thúc chế độ cập nhật, NSD có thể quay về chế độ duyệt Lời giải: import java. awt.*; import java. sql.*;... System.out.println(""); } } } 2 Dựa vào bài 1, xây dựng một ứng dụng hiển thị thông tin về cơ sở dữ liệu trên với giao diện GUI Mục đích: Học viên hiểu cách truy xuất dữ liệu (query) từ Java và áp dụng vào một ch ơng trình gần với thực tế Nội dụng: Hiển thị thông tin về bảng lơng của các cá nhân trong CSDL Cho phép duyệt xem từng bản ghi trong CSDL một cách lần lợt Lời giải: import java. awt.*; import java. sql.*; public... một CSDL qua kết nối trung gian ODBC sử dụng JDBC Thể hiện đợc khả năng truy xuất (query) và cập nhật dữ liệu (update) sử dụng Java Nội dung: Hiển thị nội dung thông tin của một CSDL về bảng lơng ( CSDL Access) và cập nhật thêm thông tin vào CSDL này Mã chơng trình mẫu: import java. sql.*; class jdbc1 { public static void main(String args[]) { String url = "jdbc:odbc:Emp"; String query = "SELECT Name,Address... Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); java. sql.Connection con = DriverManager.getConnection(url, null, null); checkForWarning(con.getWarnings()); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(query); dispResultSet(rs); int i = stmt.executeUpdate(update); rs = stmt.executeQuery(query); dispResultSet(rs); rs.close(); stmt.close(); con.close(); } catch(SQLException ex) { reportSQLError(ex); } catch (java. lang.Exception... DriverManager.getConnection(url, null, null); checkForWarning(con.getWarnings()); stmt = con.createStatement(); rs = stmt.executeQuery(query); dispResultSet(rs); } catch(SQLException ex) { reportSQLError(ex); } catch (java. lang.Exception ex) { ex.printStackTrace(); } } private static boolean checkForWarning(SQLWarning warn) throws SQLException { boolean rc = false; if(warn != null) { System.out.println("\n *** Warning... DriverManager.getConnection(url, null, null); checkForWarning(con.getWarnings()); stmt = con.createStatement(); rs = stmt.executeQuery(query); dispResultSet(rs); } catch(SQLException ex) { reportSQLError(ex); } catch (java. lang.Exception ex) { ex.printStackTrace(); } } private static boolean checkForWarning(SQLWarning warn) throws SQLException { boolean rc = false; if(warn != null) { System.out.println("\n *** Warning . x,y; } 7. Bài tập áp dụng cả 2 bài 5,6 để xây dựng một applet chặn các sự kiện của chuột và hiển thị nội dung văn bản tại toạ độ chuột. Mục đích: Học viên hiểu rõ 2 bài tập 5,6 để xây dựng một bài tập. d.height -1); } } 2. Dựa vào bài tập mẫu 1, viết một applet hiển thị đồ thị một hàm số. Mục đích: Hiểu kỹ hơn applet ở bài tập 1 và làm quen với cách thể hiện chơng trình trong Java. Hàm số cần thể. Thực hành Java Phần I Java applet 1. Bài tập mẫu để hiểu các thành phần cơ bản của một Java- applet. Mục đích: Học viên nắm đợc các thành phần cơ