Lập trình Java - 28

Lớp TreePath tóm lược thông tin về đường đi đến một nút đặc biệt trong một cây. Nó cung cấp vài constructor và hàm. Trong cuốn sách này, chỉ có hàm toString() được sử dụng. Nó trả về một chuỗi tương ứng với đường đi của cây.Giao diện TreeNode trình bày các hàm lấy thông tin về một nút cây. Ví dụ, có thể lấy được một tham chiếu đến nút cha hay bảng danh sách các nút con. Giao diện MutableTreeNode mở rộng TreeNode. Nó trình bày các hàm mà có thể chèn và bỏ các nút con hay thay đổi nút cha.

Lớp DefaultMutableTreeNode thực hiện giao diện MutableTreeNode. Nó miêu tả một nút của cây. Một constructor của nó như sau:

defaultMutableTreeNode(Object obj)

Ở đây obj là đối tượng chứa nút cây này. Nút cây mới không có cha hay con.

Ðể tạo một thứ tự cho các nút cây, hàm add() của DefaultMutableTreeNode có thể được sử dụng. Dạng của nó như sau:

void add(MutableTreeNode child)

Ở đây child là một nút cây được thêm vào như con của nút hiện hành. Các sự kiện mở rộng cây được trình bày bởi lớp TreeExpansionEvent trong javax.swing.event. Hàm getPath() của lớp này trả về một đối tượng TreePath, đối tượng này trình bày đường đi đến nút đã sẽ được thay đổi. Dạng của nó như sau:

TreePath getPath()

Giao diện TreeExpansionListener cung cấp hai hàm sau:

void treeCollapsed (TreeExpansionEvenr tee)

Có thể bạn quan tâm!

Xem toàn bộ 267 trang tài liệu này.

void treeExpandeed(TreeExpansionEvenr tee)

Ở đây tee là sự kiện mở rộng cây. Hàm thứ nhất được gọi khi một cây con bị giấu đi, và hàm thứ hai được gọi khi cây con được hiện thị.

Lập trình Java - 28

Sau đây là các bước tạo một cây trong một applet:

1. Tạo một đối tượng JTree.

2. Tạo một đối tượng JScrollPane. Các thông số đến constructor xác định cây và sự kiểm soát thanh cuộn dọc và ngang)

3. Thêm cây vào scroll pane.

4. Thêm scroll pane vào content pane của applet.

5.2.12. Bảng

Một bảng là một thành phần hiển thị các dòng và các cột của dữ liệu. Bạn có thể kéo con trỏ trên ranh giới cột để thay đổi kích thước các cột. Bạn cũng có thể kéo một cột đến một vị trí mới. Bảng thực hiện bởi lớp JTable, là lớp mở rộng Jcomponent. Một constructor của nó là:

JTable(Object data[][], Object colHeads[])

Ở đây data là một mảng hai chiều của thông tin sẽ được hiển thị và colHeads là một mảng một chiều lưu trên một cột.

Sau đây là các bước tạo một bảng trong một applet:

1. Tạo một đối tượng JTable.

2. Tạo một đối tượng JScrollPane (các thông số của constructor xác định bảng và sự kiểm soát thanh cuộn dọc và ngang)

3. Thêm bảng vào scroll pane.

4. Thêm scroll pane vào content pane vào applet

Ví dụ 5.11:sau minh hoạ cách tạo và sử dụng một bảng. Content pane của đối tượng JApplet được hiện hành và khung layout được ấn định như layout manager của nó. Bảng này có ba cột. Một mảng hai chiều của chuỗi được tạo cho các ô của bảng. Bạn có thể xem xét mỗi phần tử trong mảng là một mảng của ba chuỗi. Các mảng này được chuyển cho constructor JTable. Bảng này được thêm vào scroll pane và sau đó scroll pane được thêm vào content pane.

import javax.swing.*; import javax.swing.event.*; import javax.swing.tree.*; import javax.accessibility.*; import java.awt.*;

import java.awt.event.*; import java.beans.*; import java.util.*; import java.io.*;

import java.applet.*; import java.net.*;

public class TreeDemo extends DemoModule {

public static void main(String[] args) { TreeDemo demo = new TreeDemo(null); demo.mainImpl();

}

public TreeDemo(SwingSet2 swingset) {

// Set the title for this demo, and an icon used to represent this super(swingset, "TreeDemo", "toolbar/JTree.gif"); getDemoPanel().add(createTree(), BorderLayout.CENTER);

}

public JScrollPane createTree() {

DefaultMutableTreeNode top = new DefaultMutableTreeNode(getString("TreeDemo.music"));

DefaultMutableTreeNode catagory = null ; DefaultMutableTreeNode artist = null; DefaultMutableTreeNode record = null;

// open tree data

URL = getClass().getResource("/resources/tree.txt"); try {

// convert url to buffered string InputStream is = url.openStream();

InputStreamReader isr = new InputStreamReader(is); BufferedReader reader = new BufferedReader(isr);

String line = reader.readLine(); while(line != null) {

// System.out.println("reading in: ->" + line + "<-"); char linetype = line.charAt(0);

switch(linetype) { case 'C':

catagory= new DefaultMutableTreeNode(line.substring(2)); top.add(catagory);

break;

case 'A':

if(catagory != null) {

catagory.add(artist = new DefaultMutableTreeNode(line.substring(2)));

}

break; case 'R':

if(artist != null) {

artist.add(record = new DefaultMutableTreeNode(line.substring(2)));


}

break; case 'S':

if(record != null) {

record.add(new DefaultMutableTreeNode(line.substring(2)));


}

break; default: break;

}


line = reader.readLine();

}


} catch (IOException e) {

}

JTree tree = new JTree(top) { public Insets getInsets() {

return new Insets(5,5,5,5);


}

};


return new JScrollPane(tree);

}

}

Câu hỏi và bài tập chương 5

1.Cho lớp GiaiThua và lớp Java Swing GiaiThua_UI gồm các thuộc tính, phương thức và giao diện như hình sau:


a) Viết chương trình tạo lớp GiaiThua trong đó:

- Thuộc tính n là số cần tính.

- Các phương thức gồm: các setters/getters cho các thuộc tính, Các Constructor, phương thức KiemTra() đùng để kiểm tra giá trị nhập vào n có phải là một số nguyên dương không, TinhGT() để tính n!.

b) Tạo lớp GiaiThua_UI sử dụng các đối tượng của Java Swing theo mẫu.

c) Sử dụng lớp GiaiThua đã tạo để thực hiện các tính toán cho lớp GiaiThua_UI sao cho khi người dùng kích chuột vào nút Tính n! thì tính n! và hiển thị kết quảra màn hình nếu n nguyên dương, trong trường hợp còn lại thì thông báo lỗi.

2. Cho lớp PhepTinh và lớp Swing PhepTinh_UI gồm các thuộc tính, phương thức và giao diện mô tả như hình sau:


a) Viết chương trình tạo lớp PhepTinh trong đó:

-Các thuộc tính ToanHang1, ToanHang2 là các toán hạng, ToanTu là các phép toán +, -, *, /.

- Các phương thức gồm: các setters/getters cho các thuộc tính, các Constructor, thức KiemTra() đùng để kiểm tra giá trị nhập vào có phải là một số nguyên không và TinhToan() để tính giá trị của biểu thức.

b) Tạo lớp PhepTinh_UI sử dụng các đối tượng của Java Swing theo mẫu ở hình

trên

c) Sử dụng lớp PhepTinh đã tạo để tính toán cho lớp PhepTinh_UI sao cho khi

người dùng kích chuột vào nút “Tính toán”thì tính giá trị rồi hiển thị kết quả, nếu giá trị các toán hạng đều là số nguyên, trong các trường hợp còn lại thông báo lỗi ra màn hình.

3. Cho lớp PhanSo và lớp Java Swing PhanSo_UI gồm các thuộc tính, phương thức và giao diện như mô tả ở hìnhsau:


a) Viết chương trình tạo lớp PhanSo trong đó:

- Các thuộc tính TuSo, MauSo là tử số và mẫu số của phân số.

- Các phương thứcgồm: các setters/getters cho các thuộc tính, các Constructor, KiemTra() đùng để kiểm tra giá trị nhập vào có phải là một số nguyên không, RutGon() đùng để tính và trả về phân số rút gọn của phân số đã cho và TinhToan() để tính giá trị phân số.

b) Tạo lớp PhanSo_UI sử dụng các đối tượng của Java Swing theo mẫu.

c) Sử dụng lớp PhanSo đã tạo để tính toán cho lớp PhanSo_UI sao cho:

- Khi người dùng kích chuột vào nút “Rút gọn” thì tìm phân số rút gọn rồi hiển thị kết quả, nếu các giá trị tử số và mẫu số nhập vào là các số nguyên, trong các trường hợp còn lại thì thông báo lỗi.

- Khi người dùng kích chuột vào nút “Tính giá trị của phân số” tính giá trị và hiển thị kết quả ra màn hình nếu các giá trị tử số và mẫu số nhập vào là các số nguyên, trong các trường hợp còn lại thông báo lỗi ra màn hình.

4. Cho lớp PhuongTrinhBacNhat và lớp Java Swing PhuongTrinhBacNhat_UI gồm các thuộc tính, phương thức và giao diện như mô tả ở hình sau:


a) Viết chương trình tạo lớp PhuongTrinhBacNhat trong đó:

- Các thuộc tính a, b là các hệ số của phương trình.

- Các phương thức gồm: các setters/getters cho các thuộc tính, các Constructor, KiemTra() đùng để kiểm tra giá trị nhập vào có phải là một số nguyên không, toString() đùng để trả về dạng chuỗi của phương trình bậc nhất dạng ax+b=0, và GiaiPT() để biện luận nghiệm của phương trình bậc nhất.

b) Tạo lớp PhuongTrinhBacNhat_UI sử dụng các đối tượng của Java Swing theo

mẫu.

c) Sử dụng lớp PhuongTrinhBacNhat đã tạo để thực hiện các tính toán cho lớp

PhuongTrinhBacNhat_UI gồm:

- Nút “Phương trình” dùng để trả lại dạng chuỗi của phương trình bậc nhất, nếu dữ liệu nhập vào a và b là các số nguyên, trong các trường hợp còn lại thông báo lỗi ra màn hình.

- Nút “Giải phương trình” dùng để tính nghiệm của phương trình tương ứng nếu dữ liệu nhập vào a, b là các số nguyên và a khác 0, trong các trường hợp còn lại thông báo lỗi ra màn hình.

5. Cho lớp PhuongTrinhBac2 và lớp Swing PhuongTrinhBac2_UI gồm các thuộc tính, phương thức và giao diện như mô tả trong hình sau:


a) Viết chương trình tạo lớp PhuongTrinhBac2 trong đó

- Các thuộc tính a, b, c là các hệ số của phương trình bậc 2 ax2+bx+c=0

- Các phương thức gồm: các setters/getters cho các thuộc tính, các Constructor, phương thức KiemTra() đùng để kiểm tra giá trị nhập vào có phải là một số nguyên không, toString() đùng để trả về dạng chuỗi của phương trình bậc nhất dạng ax^2+bx+c=0, GiaiPT() để giải phương trình bậc hai.

b) Tạo lớp PhuongTrinhBac2_UI sử dụng các đối tượng của Java Swing theo

mẫu.

c) Sử dụng lớp PhuongTrinhBac2 đã tạo để thực hiện các tính toán cho lớp

PhuongTrinhBac2_UI gồm:

- Nút “Phương trình” dùng để tính và trả lại dạng chuỗi của phương trình bậc 2, nếu dữ liệu nhập vào đúng, ngược lại sẽ thông báo lỗi

- Nút “Giải phương trình” dùng để tính nghiệm của phương trình bậc 2 tương ứng, nếu dữ liệu nhập vào đúng, ngược lại sẽ thông báo lỗi.

6. Cho lớp SinhVien và lớp Swing SinhVien_UI gồm các thuộc tính, phương thức và giao diện như mô tả ở hình sau:

..... Xem trang tiếp theo?
⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 15/07/2022