Bài giảng Lập trình Java Chương 4: Lập trình giao diện với Java và Swing cung cấp cho người học các kiến thức: Giới thiệu về Swing, các thành phần của Swing. Mời các bạn cùng tham khảo nội dung chi tiết.
Trang 1Phát triển UD CSDL 2
Lập trình giao diện với JAVA & SWING
Trang 2Nội dung
– Swing Windows
– Swing Controls
– Swing Containers
– Swing Menu
Trang 3Giới thiệu
• Là m t th vi n đ xây d ng các ng d ng giao di n đ ột thư viện để xây dựng các ứng dụng giao diện đồ ư viện để xây dựng các ứng dụng giao diện đồ ệu về Swing ể xây dựng các ứng dụng giao diện đồ ựng các ứng dụng giao diện đồ ứng dụng giao diện đồ ụng giao diện đồ ệu về Swing ồ
h a ngọa người dùng (GUI – Graphics User Interface) của ngôn ư viện để xây dựng các ứng dụng giao diện đồ ời dùng (GUI – Graphics User Interface) của ngôn i dùng (GUI – Graphics User Interface) c a ngôn ủa Swing:
d ng trong vi c xây d ng m t ng d ng GUI t c b n ụng giao diện đồ ệu về Swing ựng các ứng dụng giao diện đồ ột thư viện để xây dựng các ứng dụng giao diện đồ ứng dụng giao diện đồ ụng giao diện đồ ừ cơ bản ơ bản ản
đ n ph c t p.ến phức tạp ứng dụng giao diện đồ ạp
checkbox, listbox, tree, table, jframe,
Trang 4• Các thành ph n trong Swing toolkit: ần của Swing:
– Swing Windows: Ch a các lo i c a s hi n th c a m t ứng dụng giao diện đồ ạp ử ổ hiển thị của một ể xây dựng các ứng dụng giao diện đồ ị của một ủa Swing: ột thư viện để xây dựng các ứng dụng giao diện đồ
ng d ng GUI
ứng dụng giao diện đồ ụng giao diện đồ
các control khác
– Swing Menu: Thi t k menu cho m t ng d ng swingến phức tạp ến phức tạp ột thư viện để xây dựng các ứng dụng giao diện đồ ứng dụng giao diện đồ ụng giao diện đồ
Trang 5• Swing Windows:
• JFrame: M t c a s d ng top-level-window ột thư viện để xây dựng các ứng dụng giao diện đồ ử ổ hiển thị của một ạp.
• JDialog: M t c a s h p tho i s d ng đ nh p và xu t d li u ột thư viện để xây dựng các ứng dụng giao diện đồ ử ổ hiển thị của một ột thư viện để xây dựng các ứng dụng giao diện đồ ạp ử ụng giao diện đồ ể xây dựng các ứng dụng giao diện đồ ập hợp các components sử ất nhiều loại control: label, button, ữ JAVA ệu về Swing
• JInternalFrame : M t c a s trong m t ng d ng MDI ột thư viện để xây dựng các ứng dụng giao diện đồ ử ổ hiển thị của một ột thư viện để xây dựng các ứng dụng giao diện đồ ứng dụng giao diện đồ ụng giao diện đồ
Trang 6JFrame
• JFrame đ ược sử dụng để làm giao diện chính trong ử dụng để làm giao diện chính trong ụng để làm giao diện chính trong c s d ng đ làm giao di n chính trong ể làm giao diện chính trong ện chính trong
ng d ng Swing
ứng dụng Swing ụng để làm giao diện chính trong
• H u h t các ng d ng Swing đần của Swing: ến phức tạp ứng dụng giao diện đồ ụng giao diện đồ ư viện để xây dựng các ứng dụng giao diện đồ ợp các components sử c xây d ng t ựng các ứng dụng giao diện đồ ừ cơ bản
Trang 7JFrame
Trang 8Khai báo lớp kế thừa JFrame
✔ Khai báo k th a JFrame ế thừa JFrame ừa JFrame
✔ Khai báo s d ng th vi n ử dụng thư viện ụng thư viện ư viện ện Swing
✔ Hàm kh i t o các đ i t ởi tạo các đối tượng ạo các đối tượng ối tượng ư viện ợng ng giao di n: t o và thi t l p các ện ạo các đối tượng ế thừa JFrame ập các thu c tính cho các control: v ộc tính cho các control: vị ị trí, màu s c, … ắc, …
✔ Hàm này t phát sinh mã ự phát sinh mã ngu n khi s d ng thi t k ồn khi sử dụng thiết kế ử dụng thư viện ụng thư viện ế thừa JFrame ế thừa JFrame giao di n kéo th WYSIWYG ện ả WYSIWYG.
Một lớp kế thừa từ JFrame có đủ tất cả các thành phần của JFrame (các thuộc tính / phương thức public / protected
Trang 9} }
Trang 10JFrame – Một số phương thức thông
dụng
• public void setDefaultCloseOperation (int operation);
• Ý nghĩa: Gán phư viện để xây dựng các ứng dụng giao diện đồ ơ bản ng th c m c đ nh khi ngứng dụng giao diện đồ ặc định khi người dùng đóng ị của một ư viện để xây dựng các ứng dụng giao diện đồ ời dùng (GUI – Graphics User Interface) của ngôn i dùng đóng Frame
• Có 4 l a ch n (giá tr int operation)ựng các ứng dụng giao diện đồ ọa người dùng (GUI – Graphics User Interface) của ngôn ị của một
– WindowConstants DO_NOTHING_ON_CLOSE
– WindowConstants HIDE_ON_CLOSE
– WindowConstants DISPOSE_ON_CLOSE
– WindowConstants EXIT_ON_CLOSE
Trang 11JFrame – Một số phương thức thông dụng
• public void setExtendedState (int state);
• Có 5 l a ch n (giá tr int state)ựng các ứng dụng giao diện đồ ọa người dùng (GUI – Graphics User Interface) của ngôn ị của một
Trang 12JFrame – Một số phương thức thông dụng
• public void setResizable (boolean resizable);
– true: Cho phép thay đ i kích th ổ hiển thị của một ư viện để xây dựng các ứng dụng giao diện đồ ới thiệu về Swing c
– false: không cho phép
• public void setTitle (String title);
– Gán t a đ cho JFrame ựng các ứng dụng giao diện đồ ề Swing
• public void setIconImage (Image image);
– Gán hình nh Icon cho JFrame ản
Trang 13JFrame – Một số phương thức thông dụng
• public void setSize (Dimension d);
• public void setSize (int width, int height);
– Gán kích th ư viện để xây dựng các ứng dụng giao diện đồ ới thiệu về Swing c cho JFrame
• public void setLocation (Point p);
• public void setLocation (int x, int y);
– Gán v trí cho JFrame ị của một
• public void setVisible (boolean visible);
– true : hi n Jframe ệu về Swing
– false : n Jframe ẩn Jframe
• Tư viện để xây dựng các ứng dụng giao diện đồ ơ bản ng t cho các phựng các ứng dụng giao diện đồ ư viện để xây dựng các ứng dụng giao diện đồ ơ bản ng th c ứng dụng giao diện đồ get/is
Trang 14JFrame – Một số phương thức thông
dụng
• public void dispose ();
– H y ủa Swing:
• public Containter getCotentPane()
– L y vùng Content Pane c a Frame (Content pane: vùng ch a các ất nhiều loại control: label, button, ủa Swing: ứng dụng giao diện đồ
đ i t ối tượng trong thiết kế giao diện của Swing) Mỗi đối tượng ư viện để xây dựng các ứng dụng giao diện đồ ợp các components sử ng trong thi t k giao di n c a Swing) M i đ i t ến phức tạp ến phức tạp ệu về Swing ủa Swing: ỗi đối tượng ối tượng trong thiết kế giao diện của Swing) Mỗi đối tượng ư viện để xây dựng các ứng dụng giao diện đồ ợp các components sử ng
JFrame luôn có 1 ContentPane
– getContentPane().add : ph ư viện để xây dựng các ứng dụng giao diện đồ ơ bản ng th c th ứng dụng giao diện đồ ư viện để xây dựng các ứng dụng giao diện đồ ời dùng (GUI – Graphics User Interface) của ngôn ng s d ng đ thêm ử ụng giao diện đồ ể xây dựng các ứng dụng giao diện đồ
m t đ i t ột thư viện để xây dựng các ứng dụng giao diện đồ ối tượng trong thiết kế giao diện của Swing) Mỗi đối tượng ư viện để xây dựng các ứng dụng giao diện đồ ợp các components sử ng vào JFrame
– getContentPane().setBackground( Color c); Thi t l p màu n n cho ến phức tạp ập hợp các components sử ề Swing content pane (frame)
Trang 15ImageIcon (this.getClass().getResource("images/download.png"));
Trang 16JFrame f = new VD1_Frame ();
} }
Trang 17components & IDE sẽ tự động phát sinh mã nguồn tương ứng
Trang 18• JFrame hay JDialog thư viện để xây dựng các ứng dụng giao diện đồ ời dùng (GUI – Graphics User Interface) của ngôn ng s d ng JDialog nh p li u ử ụng giao diện đồ ập hợp các components sử ệu về Swing
ho c xu t li uặc định khi người dùng đóng ất nhiều loại control: label, button, ệu về Swing
Trang 19JDialog - Khai báo lớp kế thừa JDialog
//D li u + Các ph ữ JAVA ệu về Swing ư viện để xây dựng các ứng dụng giao diện đồ ơ bản ng th c get/set (n u có) ứng dụng giao diện đồ ến phức tạp.
✔ Khai báo s d ng th vi n ử dụng thư viện ụng thư viện ư viện ện Swing
✔ Khai báo k th a t l p ế thừa JFrame ừa JFrame ừa JFrame ớp JDialog
✔ Hàm kh i t o có thêm tham s ởi tạo các đối tượng ạo các đối tượng ối tượng
là 1 Frame ho c Dialog ch th ặc Dialog chỉ thị ỉ thị ị cho c a s cha ử dụng thư viện ổ cha
✔ Ph ư viện ơng thức initComponents ng th c initComponents ức initComponents
đ kh i t o các thành ph n ể khởi tạo các thành phần ởi tạo các đối tượng ạo các đối tượng ần giao di n c a dialog ện ủa dialog.
✔ Khai báo d li u và các ữ liệu và các ện
ph ư viện ơng thức initComponents ng th c get/set đ l y giá ức initComponents ể khởi tạo các thành phần ấy giá
tr / truy n giá tr t form cha ị ền giá trị từ form cha ị ừa JFrame
Trang 20JDialog – Hiển thị
• JFrame hay JDialog thư viện để xây dựng các ứng dụng giao diện đồ ời dùng (GUI – Graphics User Interface) của ngôn ng s d ng JDialog nh p li u ử ụng giao diện đồ ập hợp các components sử ệu về Swing
ho c xu t li uặc định khi người dùng đóng ất nhiều loại control: label, button, ệu về Swing
• Jdialog thư viện để xây dựng các ứng dụng giao diện đồ ời dùng (GUI – Graphics User Interface) của ngôn ng đư viện để xây dựng các ứng dụng giao diện đồ ợp các components sử c thi t l p tr ng thái Modal, ến phức tạp ập hợp các components sử ởi tạo các thành phần ạp
nghĩa là khi Jdialog th c hi n xong m i đựng các ứng dụng giao diện đồ ệu về Swing ới thiệu về Swing ư viện để xây dựng các ứng dụng giao diện đồ ợp các components sử c phép thao tác lên form cha
Trang 21private void jbuttonActionPerformed(ActionEvent evt){
NameDialog dlg=new NameDialog (this, true);
//Gán d li u cho dlg thông qua set (n u có) ữ liệu cho dlg thông qua set (nếu có) ện chính trong ếu có)
dlg.setVisible(true);
//L y d li u cho dlg thông qua get (n u có) ấy dữ liệu cho dlg thông qua get (nếu có) ữ liệu cho dlg thông qua set (nếu có) ện chính trong ếu có)
}
Trang 22JDialog – Một số phương thức thông dụng
• public void setDefaultCloseOperation(int operation);
• Gán phư viện để xây dựng các ứng dụng giao diện đồ ơ bản ng th c m c đ nh khi ngứng dụng giao diện đồ ặc định khi người dùng đóng ị của một ư viện để xây dựng các ứng dụng giao diện đồ ời dùng (GUI – Graphics User Interface) của ngôn i dùng đóng Frame
• Có 3 l a ch n sau:ựng các ứng dụng giao diện đồ ọa người dùng (GUI – Graphics User Interface) của ngôn
– WindowConstants.DO_NOTHING_ON_CLOSE
– WindowConstants.HIDE_ON_CLOSE
– WindowConstants.DISPOSE_ON_CLOSE
Trang 23JDialog – Một số phương thức thông dụng
• M t s phột thư viện để xây dựng các ứng dụng giao diện đồ ối tượng trong thiết kế giao diện của Swing) Mỗi đối tượng ư viện để xây dựng các ứng dụng giao diện đồ ơ bản ng th c tứng dụng giao diện đồ ư viện để xây dựng các ứng dụng giao diện đồ ơ bản ng t JFrameựng các ứng dụng giao diện đồ
– public void setResizable ( boolean resizable);
– public void setTitle ( String title);
– public void setBackground ( Color c);
– public void setForeground ( Color c);
– public void setIconImage ( Image image);
– public void setSize ( Dimension d);
– public void setSize ( int width, int height);
– public void setLocation ( Point p);
– public void setLocation ( int x, int y);
– public void setVisible ( boolean visible);
– public void dispose();
– public Containter getCotentPane();
Trang 24JDialog – Một số phương thức thông dụng
• public void setModal (boolean modal);
– true: Modal
– false : Modeless
• Tư viện để xây dựng các ứng dụng giao diện đồ ơ bản ng t cho các phựng các ứng dụng giao diện đồ ư viện để xây dựng các ứng dụng giao diện đồ ơ bản ng th c get/isứng dụng giao diện đồ
Trang 25dlg.setValue(jlblResult.getText());
jlblResult.setText(dlg.getValue());
}
}
Trang 26}
}
Trang 27public class DemoSWING {
public static void main( String [] args) { JFrame f = new VD3_Frame();
f.setVisible(true);
}
}
Trang 28JDesktopPane & JInternalFrame
Trang 29JDesktopPane & JInternalFrame
• JDesktopPane
– JDesktopPane đư viện để xây dựng các ứng dụng giao diện đồ ợp các components sử c s d ng đ xây d ng ng d ng MDI ử ụng giao diện đồ ể xây dựng các ứng dụng giao diện đồ ựng các ứng dụng giao diện đồ ứng dụng giao diện đồ ụng giao diện đồ
– JDesktopPane thư viện để xây dựng các ứng dụng giao diện đồ ời dùng (GUI – Graphics User Interface) của ngôn ng là m t thành ph n bên trong ột thư viện để xây dựng các ứng dụng giao diện đồ ần của Swing: JFrame
– JDesktopPane thư viện để xây dựng các ứng dụng giao diện đồ ời dùng (GUI – Graphics User Interface) của ngôn ng đ ư viện để xây dựng các ứng dụng giao diện đồ ợp các components sử c s d ng đ ch a các ử ụng giao diện đồ ể xây dựng các ứng dụng giao diện đồ ứng dụng giao diện đồ
JInternalFrame bên trong
• JInternalFrame
– JInternalFrame đ ư viện để xây dựng các ứng dụng giao diện đồ ợp các components sử c s d ng đ đ a vào bên trong ử ụng giao diện đồ ể xây dựng các ứng dụng giao diện đồ ư viện để xây dựng các ứng dụng giao diện đồ
JDesktopPane c a JFrame đ xây d ng ng d ng MDI ủa Swing: ể xây dựng các ứng dụng giao diện đồ ựng các ứng dụng giao diện đồ ứng dụng giao diện đồ ụng giao diện đồ
• Các bư viện để xây dựng các ứng dụng giao diện đồ ới thiệu về Swingc xây d ng ng d ng MDI:ựng các ứng dụng giao diện đồ ứng dụng giao diện đồ ụng giao diện đồ
– B ư viện để xây dựng các ứng dụng giao diện đồ ới thiệu về Swing c 1: Xây d ng m t hay nhi u ựng các ứng dụng giao diện đồ ột thư viện để xây dựng các ứng dụng giao diện đồ ề Swing JInternalFrame
– B ư viện để xây dựng các ứng dụng giao diện đồ ới thiệu về Swing c 2: T o m t ạp. ột thư viện để xây dựng các ứng dụng giao diện đồ JFrame có m t ột thư viện để xây dựng các ứng dụng giao diện đồ JDesktopPane bên trong
– B ư viện để xây dựng các ứng dụng giao diện đồ ới thiệu về Swing c 3: G n ắn JInternalFrame vào bên trong JDesktopPane
Trang 30JDesktopPane và JInternalFrame
JFrame
JDesktopPane
Trang 31JDesktopPane & JInternalFrame– Một
số phương thức thông dụng
• JDesktopPane:
– public void add( Component component);
• component : th ư viện để xây dựng các ứng dụng giao diện đồ ời dùng (GUI – Graphics User Interface) của ngôn ng là JInternalFrame – public JInternalFrame getSelectedFrame();
• L y JInternalFrame đang đ ất nhiều loại control: label, button, ư viện để xây dựng các ứng dụng giao diện đồ ợp các components sử c ch n ọa người dùng (GUI – Graphics User Interface) của ngôn – public JInternalFrame [] getAllFrames();
• L y t t c các JInternalFrame bên trong ất nhiều loại control: label, button, ất nhiều loại control: label, button, ản
• JInternalFrame
– T ư viện để xây dựng các ứng dụng giao diện đồ ơ bản ng t JFrame ựng các ứng dụng giao diện đồ
Trang 33JDesktopPane & JInternalFrame – Ví dụ 4
f.setVisible(true);
}
}
Trang 34có th để xây dựng các ứng dụng giao diện đồ ư viện để xây dựng các ứng dụng giao diện đồ ợp các components sử ử ụng giao diện đồ c s d ng nh m t user control.ư viện để xây dựng các ứng dụng giao diện đồ ột thư viện để xây dựng các ứng dụng giao diện đồ
• JPanel đư viện để xây dựng các ứng dụng giao diện đồ ợp các components sử c s d ng nh m t thành ph n bên trong ử ụng giao diện đồ ư viện để xây dựng các ứng dụng giao diện đồ ột thư viện để xây dựng các ứng dụng giao diện đồ ần của Swing:
Trang 36Layout Manager
• M t ột thư viện để xây dựng các ứng dụng giao diện đồ Container là m t Component có th ch a các ột thư viện để xây dựng các ứng dụng giao diện đồ ể xây dựng các ứng dụng giao diện đồ ứng dụng giao diện đồ
JPanel, JDesktopPane, JInternalFrame
• getContentPane().add đ thêm Component vào Containerể xây dựng các ứng dụng giao diện đồ
• M i Container có m t đ i tỗi đối tượng ột thư viện để xây dựng các ứng dụng giao diện đồ ối tượng trong thiết kế giao diện của Swing) Mỗi đối tượng ư viện để xây dựng các ứng dụng giao diện đồ ợp các components sử ng Layout Manager
• Layout Manager là m t đ i tột thư viện để xây dựng các ứng dụng giao diện đồ ối tượng trong thiết kế giao diện của Swing) Mỗi đối tượng ư viện để xây dựng các ứng dụng giao diện đồ ợp các components sử ng quy t đ nh ến phức tạp ị của một cách
s p x p v trí c a các Component ắp xếp vị trí của các Component ếu có) ị trí của các Component ủa các Component bên trong m t ột thư viện để xây dựng các ứng dụng giao diện đồ
Container
Trang 37Layout Manager
• M i ỗi đối tượng Container có m t đ i ột thư viện để xây dựng các ứng dụng giao diện đồ ối tượng trong thiết kế giao diện của Swing) Mỗi đối tượng tư viện để xây dựng các ứng dụng giao diện đồ ợp các components sử ng Layout Manager m c ặc định khi người dùng đóng
đ nhị của một , nh ng hoàn toàn có th gán cho ư viện để xây dựng các ứng dụng giao diện đồ ể xây dựng các ứng dụng giao diện đồ Container m t ột thư viện để xây dựng các ứng dụng giao diện đồ
đ i tối tượng trong thiết kế giao diện của Swing) Mỗi đối tượng ư viện để xây dựng các ứng dụng giao diện đồ ợp các components sử ng Layout Manger theo ý mu nối tượng trong thiết kế giao diện của Swing) Mỗi đối tượng
vi c b trí các ệu về Swing ối tượng trong thiết kế giao diện của Swing) Mỗi đối tượng Component bên trong m t ột thư viện để xây dựng các ứng dụng giao diện đồ Container
• M t ột thư viện để xây dựng các ứng dụng giao diện đồ Layout Manager ch u trách nhi m b trí các ị của một ệu về Swing ối tượng trong thiết kế giao diện của Swing) Mỗi đối tượng
Component đư viện để xây dựng các ứng dụng giao diện đồ ợp các components sử c thêm vào Container và khi Container
thay đ i kích thổ hiển thị của một ư viện để xây dựng các ứng dụng giao diện đồ ới thiệu về Swingc
c a ủa Swing: Container đ thay đ i cách b trí các ể xây dựng các ứng dụng giao diện đồ ổ hiển thị của một ối tượng trong thiết kế giao diện của Swing) Mỗi đối tượng Component
bên trong nó
Trang 38Layout Manager Implemented Interfaces
Trang 39FlowLayout
• T o dòng m i khi kích thạp ới thiệu về Swing ư viện để xây dựng các ứng dụng giao diện đồ ới thiệu về Swingc dòng còn l i không đ ch a ạp ủa Swing: ứng dụng giao diện đồ Component thêm vào
• Flow Layout b trí v trí các Component ph thu c vào ối tượng trong thiết kế giao diện của Swing) Mỗi đối tượng ị của một ụng giao diện đồ ột thư viện để xây dựng các ứng dụng giao diện đồ kích thư viện để xây dựng các ứng dụng giao diện đồ ới thiệu về Swing ủa Swing:c c a Container
• M i dòng c a các Component đỗi đối tượng ủa Swing: ư viện để xây dựng các ứng dụng giao diện đồ ợp các components sử c window m c đ nh ặc định khi người dùng đóng ị của một
ho c ph i.ặc định khi người dùng đóng ản
Trang 40FlowLayout – Một số phương thức phổ biến
• public FlowLayout (): Phư viện để xây dựng các ứng dụng giao diện đồ ơ bản ng th c kh i t o m c đ nhứng dụng giao diện đồ ởi tạo các thành phần ạp ặc định khi người dùng đóng ị của một
– align: FlowLayout.CENTER
– vgap: 5px, hgap: 5px
tham sối tượng trong thiết kế giao diện của Swing) Mỗi đối tượng
– align: canh lề Swing
• FlowLayout.CENTER : Canh gi a ữ JAVA
• FlowLayout.LEFT; : Canh trái
• FlowLayout.RIGHT; : Canh ph i ản
– hgap: 5px, vgap: 5px