Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 43 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
43
Dung lượng
362,46 KB
Nội dung
BÀI TẬP NHÓM NHÓM 3 LẬP TRÌNH GIAO DIỆN VỚI SWING • Vũ Duy Khánh • Đặng Thanh Hà • Nguyễn Đình Thịnh • Nguyễn Duy Hưng I. Tổng quan về swing 1.Giới thiệu về Swing Swing là thư viện lập trình mở rộng của java. Nó mở rộng các đối tượng giao diện đồ họa cơ bản của java. Swing còn được gọi là thư viện JEC (Java Foundations Class). Khi muốn sử dụng các đối tượng đồ họa của thư viện này, ta phải khai báo chỉ thị: Import javax.swing.*; 2. Tại sao lại sử dụng Swing? Swing là gói con được kế thừa và phát triển từ gói giao diện awt – 1 gói giao diện đời đầu. Swing sử dụng những thư viết tự viết độc lập với hệ thống do đó tính ổn định cao, loại bỏ được nhược điểm của awt là phụ thuộc vào hệ thống dẫn đến những kết quả khác nhau ở những hệ điều hành khác nhau . 3. Các gói và các lớp Swing 3.1. javax.accessibility Chứa các lớp và các giao tiếp mà có thể được sử dụng cho phép công nghệ trợ giúp để tương tác với các thành phần của Swing. Các công nghệ trợ giúp đề cập 1 dãy các item, từ bộ đọc văn bản đến phóng đại màn hình. Mặc dù các lớp accessibility là những công nghệ không thuộc các thành phần Swing nhưng chúng được sử dụng mở rộng thông qua các thành phần Swing. 3.2. javax.swing Chứa các thành phần cốt lõi của Sswing, bao gồm hầu hết các mô hình giao tiếp và các lớp hỗ trợ 3.3. javax.swing.border Chứa định nghĩa các lớp đường viền trừu tượng cũng như 8 đường viền được định nghĩa. Border không phải là những thành phần, thay vì thế, chúng là những yếu tố đồ họa đặc biệt mà Swing sử dụng như những thuộc tính và đặt chúng xung quanh các thành phần. Nếu như bạn tạo ra border của riêng bạn, bạn có thể tạo lớp con từ những border có sẵn trong gói này, hoặc bạn có thể viết mã cho một lớp mới 3.4. javax.swing.colorchooser Hỗ trợ cho thành phần JcolorChooser 3.5. java.swing.event Định nghĩa những listener mới và những event mà những thành phần Swing sử dụng để giao tieeos thông tin với các class 3.6. javax.swing.filechooser Hỗ trợ cho thành phần JfileChooser 3.7. javax.swing.plaf Định nghĩa những yếu tố dụng nhất tạo nên cảm quan (Look And Feel) cho mỗi thành phần Swing. Trong gói này chứa các gói con là javax.swing.plaf.basic, javax.swing.plaf.metal và javax.swing.plaf.multi 3.8. javax.swing.table Cung cấp các mô hình và quan sát cho thành phần table, cho phép bạn sắp xếp thông riêng biệt trong định dạng lưới với sự xuất hiện tượng tự như bảng tính 3.9. javax.swing.text Cung cấp các điểm của các lớp và giao tiếp dựa trên văn bản hỗ trợ thiết kế thông dụng được biết đến như document/view 3.10. javax.swing.test.html Sử dụng kĩ thuật đọc và định dạng văn bản HTML 3.11. javax.swing.text.html.parser Hỗ trợ việc phân tích HTML 3.12. javax.swing.text.hf Sử dụng kĩ thuật đọc và định dạng Rich Text Formay 3.13. javax.swing.tree Định nghĩa các mô hình và quan sát thành phần một cây phân cấp, có thể thay thế một cấu trúc file hoặc một dã các thuộc tính 3.14. javax.swing.undo Chứa những chức năng cần thiết cho việc bổ sung chức năng undo II. Các thành phần trong swing NỘI DUNG + Giao diện người dùng với Java (Java GUI) + Các Container : JFrame, JPanel, Jdialog + Các component: Jlabel, Jtextfield, Jbutton, JComboBox, JcheckBox, JradioButton + Layout manager: FlowLayout, GridLayout, BorderLayout, … + Tạo menu 1. GIAO DIỆN NGƯỜI DÙNG VỚI JAVA + Cung cấp các công cụ cho phép tạo giao tiếp trực quan và hấp dẫn với người dùng, được biết đến là swing + Giao diện với người dùng bao gồm 1 cửa sổ chính và các control được đặt lên trên + Các thành phần tạo giao diện nằm trong gói javax.swing + Tên của các lớp này bắt đầu bằng chữ J Hình 1.1 1.1 JFrame + Đây là cửa sổ chính dùng để chứa các thành phần giao diện khác. Đóng vai trò là 1 container + JFrame thường dùng để tạo ra cửa sổ trong chương trình swing + Khởi tạo JFrame(); Tạo một frame nhưng không hiển thị (invisible) JFrame(String title); Tạo một frame không hiển thị, có tiêu đề. + Các thành phần đồ họa được đưa vào content pane, không đưa trực tiếp vào đối tượng JFrame + Ví dụ: Chương trình sau minh hoạ cách tạo một JFrame. import javax.swing.*; class FrameDemo { public static void main(String args[]) { JFrame f=new JFrame (“I have been Frameed!!!”); f.setSize(300,200); f.setVisible(true); } } Kết xuất của chương trình giống như hình dưới JPanel + JPanel là container trung gian dùng để chứa các conponent khác + Thường dùng để phân chia các component trong ứng dụng + Layout mặc định là FlowLayout + Khởi tạo: JPanel(); Tạo JPanel mới không tiêu đề JPanel(LayoutManager layout); Tạo JPanel mới có kiểu Layout là layout Chương trình sau chỉ ra cách tạo một JPanel: import javax.swing.*; class Paneltest { public static void main(String args[]) { JPanel p = new JPanel (); JFrame f = new JFrame(“Testing a Panel”); f.add(p); f.setSize(300,200); f.setVisible(true); } } JPanel không thể được nhìn thấy trực tiếp. Do đó, chúng ta cần thêm panel đến một frame. Vì vậy ta cần tạo một JFrame mới và thêm JPanel mới được tạo này vào đó. Kết xuất của chương trình: JDialog Lớp JDialog tương tự như lớp JFrame, nghĩa là JDialog là lớp con của lớp Window. Đối tượng dialog được tạo như sau: JFrame myframe=new JFrame(“My frame”); String title = “Title”; boolean modal = true; JDialog dlg=new JDialog(myframe, title, modal); Tham số modal chỉ ra rằng dialog sẽ ngăn chặn bất kỳ tương tác nào xảy đến với các cửa sổ được mở khác, trong khi dialog đang được hiển thị trên màn hình. Kiểu hộp thoại này ngăn chặn người dùng tương tác với các cửa sổ khác (của cùng ứng dụng) trên màn hình, cho tới khi dialog được đóng lại. 2. CÁC THÀNH PHẦN GIAO TIẾP NGƯỜI DÙNG CƠ BẢN + Form được dùng để thu thập thông tin tù phía người dùng + Trong khi giao tiếp, component được dùng để cho phép nhập liệu là TextField hoặc TextBox + Để khởi tạo các phần tử, các bước cần phải thực hiện là: Tạo phần tử Thiết lập các thuộc tính (size, color, font, …) Đưa nó vào màn hình Các loại component Hình 2.1 JLabel + Được dùng để hiện thị văn bản (text) và hình ảnh (image) + Tạo hiệu ứng trực quan cho màn hình giao diện + Các hàm khởi tạo: JLabel(); Tạo JLabel trống JLabel(String st); Tạo JLabel với nội dung là st JLabel(Icon img); Tạo JLabel nội dung là hình ảnh img JLabel(int align); Tạo một JLabel với một chế độ canh lề (alignment) , canh lề có thể là JLabel.LEFT, JLabel.RIGHT hay JLabel.CENTER. Các phương thức được sử dụng phổ biến của label được trình bày ở bảng bên dưới: Phương thức Chức năng setFont(Font f) Thay đổi phông chữ của JLabel setText(String s) Thiết lập nhãn cho Jlabel getText() Lấy nội dung hiện tại của nhãn Bảng 2.1 Các phương thức của JLabel Chương trình 2.1 chỉ ra cách sử dụng của Label: Chương trình 2.1 import javax.swing.*; class Labeltest { JLabel label=new JLabel(“This is just a label”); public static void main(String args[]) { JFrame f=new JFrame(“Label”); f.add(label); f.setSize(300,200); f.setVisible(true); } } label=new JLabel(“This is just a label”); Tạo đối tượng JLabel add(label); Label sẽ hiển thị chỉ khi nó được thêm vào container. Ở đây, JFrame là container mà thành phần JLabel được thêm vào. Việc này được thực hiện bằng cách sử dụng phương thức add(). Kết xuất của chương trình được chỉ ra ở hình sau JTextComponent Đây là lớp cha của tất cả các lớp hiển thị văn bản trong Swing JTextField + Cho phép soạn thảo chỉ 1 dòng văn bản + Các hàm khởi tạo [...]... hiện điều này, chúng ta có thể sử dụng các Panel với các layout khác nhau để chứa các thành phần, và sau đó đặt các panel này vào trong BorderLayout CardLayout Manager CardLayout có thể lưu trữ một ngăn xếp (stack) các giao diện Mỗi giao diện giống như một bảng (card) Bảng thường là đối tượng Panel Một thành phần độc lập như button sẽ điều khiển cách trình bày các bảng ở lớp trên cùng Đầu tiên, chúng... Boolean Chương trình sau chỉ ra cách sử dụng của TextField: import javax .swing. *; class JFrameDemo { public static void main(String[] args) { JTextField tf = new JTextField("This is great ",20); JPanel p = new JPanel(); JFrame f = new JFrame(); p.add(tf); f.add(p); f.setSize(300,200); f.setVisible(true); } } Trong chương trình này, chúng ta sử dụng phương thức setLayout() để thay đổi cách trình bày của... main(String args[]) { Gltest t=new Gltest(“Grid Layout”); t.setSize(300,200); t.setVisible(true); } } Kết xuất chương trình như sau: GridBagLayout Manager GridBagLayout là cách trình bày hiệu quả và phức tạp hơn bất cứ cách trình bày nào khác Layout này đặt các thành phần vào vị trí chính xác Với layout này, các thành phần không cần có cùng kích thước Nó tương tự như GridLayout manager, khi các thành phần... hàm contructor Checkbox, ngoài ra còn có một tham số String là nhãn của checkbox Để hiển thị các điều khiển này theo dạng lưới, ta phải thiết lập cách trình bày về dạng GridLayout có 8 dòng và 1 cột Cuối cùng, ta tạo một biểu hiện cho lớp Checkboxtest và thiết lập kích thước cho JFrame Để hiển thị nó, ta cho gọi phương thức setVisible() Kết xuất được chỉ ra ở hình bên dưới: JList + Khi các thông tin... manager điều khiển cách trình bày vật lý của các phần tử GUI như là button, textbox, option button v.v… Một layout manager tự động bố trí các thành phần này trong container Các kiểu trình bày khác nhau: Flow layout Border layout Card layout Grid layout GridBag Layout Tất cả các thành phần mà chúng ta vừa tạo sử dụng layout manager mặc định Cho ví dụ, FlowLayout là cách trình bày mặc định của... xếp các thành phần trong một vật chứa Kết xuất của chương trình được chỉ ra ở hình bên dưới: JTextArea + Cho phép nhập nhiều dòng văn bản + Có hỗ trợ thanh cuộn + Hàm khởi tạo: JTextArea(); tạo mới một JTextArea JTextArea(int rows, int cols); JTextArea(String text); tạo mới một JTextArea với số cột và số dòng cho trước tạo mới một JTextArea với nội dung cho trước JTextArea(String text, int rows, int... thành phần Một lưới được sử dụng khi tất cả các thành phần có cùng kích thước GridLayout được tạo như sau: Gridlayout g1=new GridLayout(4,3); 4 là số dòng và 3 là số cột Chương trình sau minh họa cách trình bày lưới: import javax .swing. *; import java.awt.*; class Gltest extends JFrame { JButton btn[]; String str[]={“1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”}; public Gltest(String title) { super(title);... trí int, int cho trước Chương trình sau chỉ ra cách sử dụng của JTextArea: import javax .swing. *; class TextAreatest { public static void main(String args[]) { JLabel lb=new JLabel(“Details”); JTextArea ta=new JTextArea(); JFrame f=new JFrame(“TextArea”); JPanel p=new JPanel(); p.add(lb); p.add(ta); f.add(p); f.setSize(300,200); f.setVisible(true); } } Kết xuất của chương trình được chỉ ra ở hình bên... của biến fill Sử dụng phương thức setConstraints() để thiết lập các hằng số cho mỗi thành phần Cho ví dụ: gblay.setConstraints(lb1, gbc); gblay là đối tượng của lớp GridBagLayout, lbl là thành phần Label và gbc là đối tượng của lớp GridBagConstraints Chương trình sau minh họa một ví dụ của GridBagLayout và GridBagConstraints import javax .swing. *; import java.awt.*; class Gbltest extends JFrame { JTextArea... sẽ tạo ra 3 button: import javax .swing. *; class Buttontest { public static void main(String args[]) { JButton b1 = new JButton(“red”); JButton b2 = new JButton(“Green”); JButton b3 = new JButton(“Blue”); JFrame f= new JFrame(“Button”); JPanel p= new JPanel(); p.add(b1); p.add(b2); p.add(b3); f.add(p); f.setSize(300,200); f.setVisible(true); } } Kết xuất của chương trình được chỉ ra ở hình dưới đây . TẬP NHÓM NHÓM 3 LẬP TRÌNH GIAO DIỆN VỚI SWING • Vũ Duy Khánh • Đặng Thanh Hà • Nguyễn Đình Thịnh • Nguyễn Duy Hưng I. Tổng quan về swing 1.Giới thiệu về Swing Swing là thư viện lập trình mở rộng. thị: Import javax .swing. *; 2. Tại sao lại sử dụng Swing? Swing là gói con được kế thừa và phát triển từ gói giao diện awt – 1 gói giao diện đời đầu. Swing sử dụng những thư viết tự viết độc lập với hệ. BorderLayout, … + Tạo menu 1. GIAO DIỆN NGƯỜI DÙNG VỚI JAVA + Cung cấp các công cụ cho phép tạo giao tiếp trực quan và hấp dẫn với người dùng, được biết đến là swing + Giao diện với người dùng bao gồm