Bài giảng Lập trình Java - Chương 4: Lập trình giao diện với JAVA & SWING

Nội dung

Giới thiệu về Swing

Các thành phần của Swing:

Swing Windows

Swing Controls

Swing Containers

Swing Menu

 

pptx 107 trang phuongnguyen 5420
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình Java - Chương 4: Lập trình giao diện với JAVA & SWING", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Lập trình Java - Chương 4: Lập trình giao diện với JAVA & SWING

Bài giảng Lập trình Java - Chương 4: Lập trình giao diện với JAVA & SWING
 Chương 4 :  Lập trình giao diện với JAVA & SWING 
Nội dung 
Giới thiệu về Swing 
Các thành phần của Swing: 
Swing Windows 
Swing Controls 
Swing Containers 
Swing Menu 
Giới thiệu 
Là một thư viện để xây dựng các ứng dụng giao diện đồ họa người dùng (GUI – Graphics User Interface) của ngôn ngữ JAVA. 
Swing toolkit bao gồm một tập hợp các components sử dụng trong việc xây dựng một ứng dụng GUI từ cơ bản đến phức tạp. 
Swing toolkit có rất nhiều loại control: label, button, checkbox, listbox, tree, table, jframe, 
SWING 
Các thành phần trong Swing toolkit: 
Swing Windows : Chứa các loại cửa sổ hiển thị của một ứng dụng GUI 
Swing Controls : Các control để thiết kế giao diện 
Swing Containers : Các control mà dùng để gom nhóm các control khác. 
Swing Menu : Thiết kế menu cho một ứng dụng swing 
Swing Windows: 
JFrame: Một cửa sổ dạng top-level-window 
JDialog: Một cửa sổ hộp thoại sử dụng để nhập và xuất dữ liệu 
JInternalFrame : Một cửa sổ trong một ứng dụng MDI. 
Swing Containers: 
JDesktopPane 
JPanel 
SWING GUI FORM 
JFrame 
Hình ảnh: 
JFrame được sử dụng để làm giao diện chính trong ứng dụng Swing 
Hầu hết các ứng dụng Swing được xây dựng từ JFrame 
Một JFrame có thể chứa các thành phần khác : button, label, checkbox,  
Cách sử dụng : Tạo các lớp thừa kế JFrame để thiết kế giao diện cho ứng dụng 
JFrame 
Khai báo lớp kế thừa JFrame 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
package packageName; 
import javax.swing.* ; 
public class FrameName extends JFrame { 
public FrameName() { 
this. initComponents (); 
} 
/** 
* Khởi tạo các thành phần 
*/ 
private void initComponents () { 
... 
pack(); 
} 
} 
Khai báo kế thừa JFrame 
Khai báo sử dụng thư viện Swing 
Hàm khởi tạo các đối tượng giao diện: tạo và thiết lập các thuộc tính cho các control: vị trí, màu sắc,  
Hàm này tự phát sinh mã nguồn khi sử dụng thiết kế giao diện kéo thả 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 
JFrame – Hiển thị 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
package packageName; 
public class Main { 
public static void main(String [] args) { 
FrameName frm = new FrameName(); 
frm. setVisible ( true ); 
} 
} 
JFrame – Một số phương thức thông dụng 
public void setDefaultCloseOperation ( int operation); 
Ý nghĩa : Gán phương thức mặc định khi người dùng đóng Frame 
Có 4 lựa chọn (giá trị int operation) 
WindowConstants. DO_NOTHING_ON_CLOSE 
WindowConstants. HIDE_ON_CLOSE 
WindowConstants. DISPOSE_ON_CLOSE 
WindowConstants. EXIT_ON_CLOSE 
JFrame – Một số phương thức thông dụng 
public void setExtendedState ( int state); 
Ý nghĩa : Gán trạng thái của JFrame 
Có 5 lựa chọn (giá trị int state) 
JFrame. NORMAL 
JFrame. ICONIFIED 
JFrame. MAXIMIZED_HORIZ 
JFrame. MAXIMIZED_VERT 
JFrame. MAXIMIZED_BOTH 
JFrame – 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ước 
false: không cho phép 
public void setTitle ( String title); 
Gán tựa đề cho JFrame 
public void setIconImage ( Image image); 
Gán hình ảnh Icon cho JFrame 
JFrame – 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ước cho JFrame 
public void setLocation ( Point p); 
public void setLocation ( int x, int y); 
Gán vị trí cho JFrame 
public void setVisible ( boolean visible); 
true : hiện Jframe 
false : ẩn Jframe 
Tương tự cho các phương thức get / is 
JFrame – Một số phương thức thông dụng 
public void dispose (); 
Hủy 
public Containter getCotentPane () 
Lấy vùng Content Pane của Frame (Content pane: vùng chứa các đối tượng trong thiết kế giao diện của Swing). Mỗi đối tượng JFrame luôn có 1 ContentPane. 	 
getContentPane(). add : phương thức thường sử dụng để thêm một đối tượng vào JFrame 
getContentPane(). setBackground ( Color c); Thiết lập màu nền cho content pane (frame) 
JFrame – Ví dụ 1 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
package demoswing; 
import java.awt.Color ; 
import javax.swing.* ; 
public class VD1_Frame extends JFrame { 
 public VD1_Frame() { 
 this. initComponents (); 
 } 
 private void initComponents (){ 
 this. setDefaultCloseOperation ( WindowConstants . EXIT_ON_CLOSE ); 
 ImageIcon icon = new ImageIcon (this. getClass (). getResource (" images/download.png ")); 
 this. setIconImage (icon. getImage ()); 
 this. setTitle ("Ví dụ 1"); 
 this. setLocation (0, 0); 
 this. setSize (300, 400); 
 this. setExtendedState (JFrame.NORMAL); 
 this. getContentPane (). setBackground ( Color .WHITE); 
 } 
} 
Thiết lập icon cho frame 
JFrame – Ví dụ 1 
1 
2 
3 
4 
5 
6 
7 
8 
9 
package demoswing; 
import javax.swing.*; 
public class DemoSWING { 
public static void main( String [] args) { 
JFrame f = new VD1_Frame (); 
f. setVisible ( true ); 
} 
} 
JFrame – Ví dụ 2 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
package demoswing; 
import javax.swing.*; 
public class VD2_Frame extends JFrame { 
 private JButton jbt1; 
 public VD2_Frame() { 
 super(); 
 this. initComponents (); 
 } 
 private void initComponents () { 
 //JFrame 
 this. setTitle ( "Ví dụ 2" ); 
 this. setSize (200, 100); 
 this. setExtendedState (JFrame. NORMAL ); 
 //Buton 
 this.jbt1=new JButton (); 
 this.jbt1. setText ( "Button 1" ); 
 this. add (this.jbt1); 
 } 
} 
Lưu ý: Khi sử dụng các IDE hỗ trợ lập trình 🡪 Sử dụng tính năng kéo thả các components & IDE sẽ tự động phát sinh mã nguồn tương ứng 
JDialog 
JFrame hay JDialog thường sử dụng JDialog nhập liệu hoặc xuất liệu 
JDialog có 2 trạng thái 
Modal : Khi Jdialog thực hiện xong mới được phép thao tác lên form cha . 
Modeless : Sau khi hiển thị dialog, người dùng có thể thao tác lên form cha 
JDialog thường được sử dụng với trạng thái Modal 
JDialog - Khai báo lớp kế thừa JDialog 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
package packageName; 
import javax.swing.*; 
public class NameDialog extends JDialog { 
//Dữ liệu + Các phương thức get/set (nếu có) 
public NameDialog ( JFrame parent, boolean modal){ 
super(parent, modal); 
this. intComponents (); 
} 
public NameDialog ( JDialog parent, boolean modal){ 
super(parent, modal); 
this. intComponents (); 
} 
private void initComponents (){ 
} 
} 
Khai báo sử dụng thư viện Swing 
Khai báo kế thừa từ lớp JDialog 
Hàm khởi tạo có thêm tham số là 1 Frame hoặc Dialog chỉ thị cho cửa sổ cha 
Phương thức initComponents để khởi tạo các thành phần giao diện của dialog. 
Khai báo dữ liệu và các phương thức get/set để lấy giá trị / truyền giá trị từ form cha. 
JDialog – Hiển thị 
JFrame hay JDialog thường sử dụng JDialog nhập liệu hoặc xuất liệu 
Jdialog thường được thiết lập ở trạng thái Modal, nghĩa là khi Jdialog thực hiện xong mới được phép thao tác lên form cha 
JDialog – Cách sử dụng 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
//JDialog thường được gọi ở một JFrame hoặc JDialog khác 
//Ví dụ: Gọi hiển thị Dialog và lấy kết quả trả về khi click một button 
private void jbuttonActionPerformed(ActionEvent evt){ 
NameDialog dlg=new NameDialog (this, true); 
//Gán dữ liệu cho dlg thông qua set (nếu có) 
dlg. setVisible (true); 
//Lấy dữ liệu cho dlg thông qua get (nếu có) 
} 
JDialog – Một số phương thức thông dụng 
public void setDefaultCloseOperation (int operation); 
Gán phương thức mặc định khi người dùng đóng Frame 
Có 3 lựa chọn sau: 
WindowConstants. DO_NOTHING_ON_CLOSE 
WindowConstants. HIDE_ON_CLOSE 
WindowConstants. DISPOSE_ON_CLOSE 
JDialog – Một số phương thức thông dụng 
Một số phương thức tương tự JFrame 
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 (); 
JDialog – Một số phương thức thông dụng 
public void setModal ( boolean modal); 
true: Modal 
false : Modeless 
Tương tự cho các phương thức get/is 
JDialog - Ví dụ 3 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
package demoswing; 
import javax.swing.*; 
public class VD3_Frame extends JFrame { 
 public VD3_Frame() { 
 initComponents (); 
 } 
 private void initComponents () { 
 ... 
 } 
 private void jbtnOpenDialogActionPerformed (java.awt.event.ActionEvent evt) { 
 VD3_Dialog dlg = new VD3_Dialog ( this , true ); 
 dlg. setValue (jlblResult.getText()); 
 dlg. setVisible ( true ); 
 jlblResult. setText (dlg. getValue ()); 
 } 
 private JButton jbtnOpenDialog; 
 private JLabel jlblResult; 
} 
JDialog - Ví dụ 3 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
package demoswing; 
import javax.swing.*; 
public class VD3_Dialog extends JDialog { 
public VD3_Dialog ( JFrame parent, boolean modal) { 
 super (parent, modal); 
 initComponents (); 
 } 
 public String getValue () { 
 return jtxtValue. getText (); 
 } 
 public void setValue ( String s) { 
 jtxtValue. setText (s); 
 } 
 private void initComponents () { 
 } 
 private void jbtnOKActionPerformed(java.awt.event. ActionEvent evt) { 
 this .dispose(); 
 } 
 private JLabel jLabel1; 
 private JButton jbtnOK; 
 private JTextField jtxtValue; 
} 
Ví dụ 3 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
package demoswing; 
import javax.swing.*; 
public class DemoSWING { 
public static void main( String [] args) { 
 JFrame f = new VD3_Frame (); 
 f.setVisible(true); 
 } 
} 
JDesktopPane & JInternalFrame 
java.lang.Object 
java.awt.Component 
java.awt.Container 
javax.swing.JComponent 
javax.swing.JLayeredPane 
javax.swing. JDesktopPane 
java.lang.Object 
java.awt.Component 
java.awt.Container 
javax.swing.JComponent 
javax.swing. JInternalFrame 
java.lang.Object 
java.awt.Component 
java.awt.Container 
java.awt.Window 
java.awt.Frame 
javax.swing. JFrame 
ava.lang.Object 
java.awt.Component 
java.awt.Container 
java.awt.Window 
java.awt.Dialog 
javax.swing .JDialog 
java.lang.Object 
java.awt.Component 
java.awt.Container 
javax.swing.JComponent 
javax.swing. JPanel 
JDesktopPane & JInternalFrame 
JDesktopPane 
JDesktopPane được sử dụng để xây dựng ứng dụng MDI 
JDesktopPane thường là một thành phần bên trong JFrame 
JDesktopPane thường được sử dụng để chứa các JInternalFrame bên trong 
JInternalFrame 
JInternalFrame được sử dụng để đưa vào bên trong JDesktopPane của JFrame để xây dựng ứng dụng MDI. 
Các bước xây dựng ứng dụng MDI: 
Bước 1: Xây dựng một hay nhiều JInternalFrame 
Bước 2: Tạo một JFrame có một JDesktopPane bên trong 
Bước 3: Gắn JInternalFrame vào bên trong JDesktopPane 
JDesktopPane và JInternalFrame 
JFrame 
JDesktopPane 
JDesktopPane & JInternalFrame– Một số phương thức thông dụng 
JDesktopPane : 
public void add ( Component component); 
component : thường là JInternalFrame 
public JInternalFrame getSelectedFrame (); 
Lấy JInternalFrame đang được chọn 
public JInternalFrame [] getAllFrames (); 
Lấy tất cả các JInternalFrame bên trong 
JInternalFrame 
Tương tự JFrame 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
package demoswing; 
import javax.swing.*; 
public class VD4_MDIFrame extends JFrame { 
 public VD4_MDIFrame() { 
 initComponents(); 
 this.setSize(500, 500); 
 JInternalFrame f1 = new JInternalFrame (); 
 f1.setTitle("Form 1"); 
 f1.setSize(200, 200); 
 this. jDesktopPane1 .add(f1); 
 f1.setVisible(true); 
 JInternalFrame f2 = new JInternalFrame (); 
 f2.setTitle("Form 2"); 
 f2.setSize(300, 300); 
 this. jDesktopPane1 .add(f2); 
 f2.setVisible(true); 
 } 
 private void initComponents() { 
 jDesktopPane1 = new JDesktopPane (); 
 setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
 getContentPane() .add ( jDesktopPane1 , java.awt.BorderLayout.CENTER); 
 pack(); 
 } 
 private JDesktopPane jDesktopPane1 ; 
} 
Ví dụ 4: 
JDesktopPane & JInternalFrame – Ví dụ 4 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
package demoswing; 
import javax.swing.*; 
public class DemoSWING { 
public static void main(String[] args) { 
 JFrame f = new VD4_MDIFrame (); 
 f.setVisible(true); 
 } 
} 
JPanel 
JPanel được sử dụng gom nhóm các control bên trong, có thể được sử dụng như một user control. 
JPanel được sử dụng như một thành phần bên trong JFrame , JDialog , JInternalFrame , hoặc trong một JPanel khác. 
java.lang.Object 
java.awt.Component 
java.awt.Container 
javax.swing.JComponent 
javax.swing. JPanel 
Flow Layout 
Border Layout 
Card Layout 
Grid Layout 
Grid Bag Layout 
Box Layout 
Group Layout 
SWING LAYOUT MANAGER: 
Layout Manager 
Một Container là một Component có thể chứa các Component khác như là: JFrame , JDialog , JScollPane , JPanel , JDesktopPane , JInternalFrame 
getContentPane().add để thêm Component vào Container 
Mỗi Container có một đối tượng Layout Manager 
Layout Manager là một đối tượng quyết định cách sắp xếp vị trí của các Component bên trong một Container. 
Các Layout Manager “implements” từ interface LayoutManager hoặc LayoutManger2. 
Layout Manager 
Mỗi Container có một đối tượng Layout Manager mặc định , nhưng hoàn toàn có thể gán cho Container một đối tượng Layout Manger theo ý muốn . 
Mỗi loại Layout Manager có các nguyên tắc riêng cho việc bố trí các Component bên trong một Container . 
Một Layout Manager chịu trách nhiệm bố trí các Component được thêm vào Container và khi Container thay đổi kích thước 
Sử dụng phương thức setLayout (LayoutManager mng) của Container để thay đổi cách bố trí các Component bên trong nó. 
LayoutManager 
Các Layout Manager cài đặt từ các interface LayoutManager hoặc LayoutManager2: 
Layout Manager 
Implemented Interfaces 
Flow Layout 
LayoutManager ,  Serializable 
Border Layout 
LayoutManager ,  LayoutManager2 ,  Serializable 
Card Layout 
LayoutManager ,  LayoutManager2 ,  Serializable 
Grid Layout 
LayoutManager ,  Serializable 
Grid Bag Layout 
LayoutManager ,  LayoutManager2 ,  Serializable 
Box Layout 
LayoutManager ,  LayoutManager2 ,  Serializable 
Group Layout 
LayoutManager ,  LayoutManager2 
FlowLayout 
Flow Layout bố trí các Component trong Container theo dòng, từ trái sang phải theo thứ tự thêm vào. 
Tạo dòng mới khi kích thước dòng còn lại không đủ chứa Component thêm vào. 
Flow Layout bố trí vị trí các Component phụ thuộc vào kích thước của Container. 
Mỗi dòng của các Component được window mặc định canh giữa theo chiều ngang. Có thể điều chỉnh canh trái hoặc phải. 
FlowLayou ...  
NONE, HORIZONTAL, VERTICAL, BOTH 
anchor: 
BoxLayout 
Box Layout bố trí các Component bên trong Container theo 1 dòng theo trục X, hoặc là trục Y. 
BoxLayout(Container container, int align) 
container: chứa các Component 
axis: 
BoxLayout.X_AXIS : Trục X 
BoxLayout.Y_AXIS : Trục Y 
GroupLayout (Free Design) 
Group Layout bố trí các Component bên trong Container theo chiều ngang và chiều dọc. 
Sự bố trí được thực hiện theo mỗi chiều riêng lẽ 
JLabel 
JButton 
JTextField 
JCheckBox 
JRadioButton 
JPanel 
BASIC SWING COMPONENTS: 
JComboBox, JList 
JTable 
JMenu 
JToolBar 
JOptionPane 
JFileChooser 
JLabel 
Methods: 
setText (String text) 
getText () 
setSize (Dimenstion d) 
setForeground (Color fg) 
Events: 
mouseClicked 
JButton 
Methods: 
setText ( String text) 
getText () 
setForeground ( Color fg) 
setFocusCycleRoot ( boolean b) 
setHorizontalTextPosition ( int position) 
SwingConstants. LEFT 
SwingConstants. RIGHT 
SwingConstants. CENTER 
setVerticalTextPosition ( int position) 
SwingConstans. TOP 
SwingConstans. BOTTOM 
SwingConstans. CENTER 
setIcon ( Icon c) 
JButton 
Events: 
actionPerformed 
mousePressed 
jButton1. addActionListener (new java.awt.event. ActionListener () { 
 public void actionPerformed (java.awt.event.ActionEvent evt) { 
 jButton1ActionPerformed (evt); 
 } 
 }); 
private void jButton1ActionPerformed (java.awt.event.ActionEvent evt) { 
 // TODO add your handling code here : 
} 
Thêm một sự kiện cho control – Netbeans 
JTextField 
JTextField 
Methods: 
setText ( String text) 
getText ( ) 
setForeground (Color fg) 
Events: 
caretUpdate 
Một số JTextComponent 
JCheckBox 
Methods: 
setSelected ( boolean b) 
isSelected () 
setText ( String text) 
getText () 
Events: 
actionPerformed: Sự kiện khi checkbox được nhấn 
JRadioButton 
Methods: 
setSelected ( boolean b) 
isSelected () 
setText ( String text) 
getText () 
Events: 
actionPerformed: Sự kiện khi radioButton được nhấn 
ButtonGroup group = new ButtonGroup (); 
group. add (birdButton); 
group. add (catButton); 
group. add (dogButton); 
group. add (rabbitButton); 
group. add (pigButton); 
Gom các radioButton thành một nhóm 
 Methods of JComboBox: 
setModel (ComboBoxModel model) 
getModel () 
setSelectedIndex (int index) 
getSelectedItem () 
getSelectedIndex () 
getItemCount () 
JComboBox 
Methods of DefaultComboBoxModel 
addElement ( Object o) 
getElementAt ( int index) 
getIndexOf ( Object item) 
getSelectedItem () 
removeAllItems () 
removeItemAt ( int index) 
setSelectedItem ( int index) 
Khởi tạo từ mảng đối tượng 
Khởi tạo từ một Vector 
Events: 
actionPerformed: Sự kiện khi comboBox thay đổi item hiển thị 
A ComboBoxModel : đối tượng quản lý dữ liệu của ComboBox 
JComboBox – Ví dụ 14 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
package demoswingcomponents; 
import javax.swing.DefaultComboBoxModel; 
public class VD14_DemoComboBox extends javax.swing.JFrame { 
 public VD14_DemoComboBox() { 
 initComponents(); 
 } 
 private void initComponents() { 
 jComboBox1 = new javax.swing. JComboBox (); 
 setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
 setPreferredSize(new java.awt.Dimension(500, 300)); 
 getContentPane().setLayout(new java.awt.FlowLayout()); 
 jComboBox1.setPreferredSize(new java.awt. Dimension (100, 20)); 
 getContentPane().add( jComboBox1 ); 
 String [] items = new String [] { "Item 1" , "Item 2" , "Item 3" }; 
 DefaultComboBoxModel model = new DefaultComboBoxModel (items); 
 jComboBox1 .setModel(model); 
 pack(); 
 } 
 private javax.swing. JComboBox jComboBox1 ; 
} 
VD14 : Model là một mảng các giá trị chuỗi 
JComboBox – Ví dụ 15 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
package demoswingcomponents; 
public class Person { 
 private int id; 
 private String name; 
 public Person(int id, String name){ 
 this.id = id; 
 this.name = name; 
 } 
 public Person () { 
 this.id = 0; 
 this.name = ""; 
 } 
 public String toString () { 
 return this.id + " - " + name; 
 } 
} 
VD14 : Model là một mảng các đối tượng 
JComboBox – Ví dụ 15 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
package demoswingcomponents; 
import javax.swing.*; 
public class VD15_DemoComboBox extends javax.swing.JFrame { 
 public VD15_DemoComboBox() { 
 initComponents(); 
 Person p1 = new Person (1, "A"); 
 Person p2 = new Person (2, "B"); 
 Person p3 = new Person (3, "C"); 
 Person [] items = new Person [] {p1, p2, p3}; 
 DefaultComboBoxModel model = new DefaultComboBoxModel (items); 
 model. setSelectedItem (p2); 
 jComboBox1. setModel (model); 
 } 
 private void initComponents() { 
 jComboBox1 = new javax.swing.JComboBox(); 
 setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
 getContentPane().setLayout(new java.awt.FlowLayout()); 
 getContentPane().add(jComboBox1); 
 pack(); 
 } 
 private javax.swing.JComboBox jComboBox1; 
} 
JList 
Methods of DefaultListModel 
addElement (Object e) 
get (int index) 
getSize () 
getElementAt (int index) 
remove (int index) 
Elements () 
removeAllElements () 
Methods of JList: 
setModel ( ListModel model), getModel () 
getMaxSelectionIndex (), getMinSelectionIndex () 
getSelectedIndex (), getSelectedIndices () 
getSelectedValue (), getSelectedValues () 
Events: 
valueChanged 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
package demoswingcomponents; 
import javax.swing.DefaultListModel; 
public class VD16_DemoList extends javax.swing.JFrame { 
 public VD16_DemoList() { 
 initComponents(); 
 DefaultListModel model = new DefaultListModel(){ 
 String[] items = new String[] {"Item 1", "Item 2", "Item 3"}; 
 @Override 
 public int getSize() { return items.length; } 
 @Override 
 public Object getElementAt(int i) { return items[i]; } 
 }; 
 jList1. setModel ( model ); 
 } 
 private void initComponents() { 
 jScrollPane1 = new javax.swing.JScrollPane(); 
 jList1 = new javax.swing.JList(); 
 setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
 getContentPane().setLayout(new java.awt.FlowLayout()); 
 jScrollPane1.setViewportView(jList1); 
 getContentPane().add(jScrollPane1); 
 pack(); 
 } 
 private javax.swing.JList jList1; 
 private javax.swing.JScrollPane jScrollPane1; 
} 
JList – Ví dụ 16 
JList – Ví dụ 17 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
package demoswingcomponents; 
import javax.swing.DefaultListModel; 
public class VD17_DemoListObject extends javax.swing.JFrame { 
 public VD17_DemoListObject() { 
 initComponents(); 
 Person p1 = new Person(1, "A"); Person p2 = new Person(2, "B"); 
 Person p3 = new Person(3, "C"); 
 DefaultListModel model = new DefaultListModel(); 
 model.addElement(p1); model.addElement(p2); model.addElement(p3); 
 jList1.setModel(model); 
 } 
 private void initComponents() { 
 jScrollPane1 = new javax.swing.JScrollPane(); 
 jList1 = new javax.swing.JList(); 
 setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
 getContentPane().setLayout(new java.awt.FlowLayout()); 
 jScrollPane2.setViewportView(jList1); 
 getContentPane().add(jScrollPane1); 
 pack(); 
 } 
 private javax.swing.JList jList1; 
 private javax.swing.JScrollPane jScrollPane1; 
} 
JPanel 
Sử dụng để gom nhóm các control 
Methods: 
setBorder ( Border border) 
add (Component comp) 
Events: 
mouseClicked 
JPanel – Change the border 
Methods: 
setBorder ( Border border) 
Swing Menu 
JToolBar 
JTable 
Hình ảnh: 
Mỗi table cũng có đối tượng TableModel để quản lý dữ liệu 
Thường sử dụng DefaultTableModel 
JTable 
Các phương thức của DefaultTableModel 
addColumn ( Object obj) 
addRow ( Object obj) 
getColumnCount () 
getRowCount () 
getValueAt ( int row, int col) 
setValueAt ( Object obj, int row, int col) 
Các phương thức của JTable: 
setModel ( TableModel tm) 
getModel () 
getValueAt ( int row, int col) 
getRowCount () 
getColumnCount () 
Events: 
mouseClicked 
JTable - DefaultTableModel 
Khởi tạo model: 
Đưa một dòng dữ liệu vào model 
String[] columns = new String [] { "Mã NV", "Họ tên", "Giới tính", "Địa chỉ" }; 
DefaultTableModel model = new DefaultTableModel(null , columns); 
int manv =  
String hoten =  
String phai =  
String diachi =  
Object[] items = new Object[] {manv, hoten, phai, diachi}; 
model.addRow(items); 
JTable 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
private void initComponents() { 
 jScrollPane1 = new javax.swing.JScrollPane(); 
 jTable1 = new javax.swing.JTable(); 
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
 getContentPane().setLayout(new java.awt.FlowLayout()); 
 jTable1.setModel(new javax.swing.table.DefaultTableModel( 
 new Object [][] { 
 {"1", "2", "3"}, 
 {"4", "5", "6"}, 
 {"7", "8", "9"}, 
 {"10", "11", "12"} 
 }, 
 new String [] { 
 "Title 1", "Title 2", "Title 3" 
 } 
 )); 
 jScrollPane1.setViewportView(jTable1); 
 getContentPane().add(jScrollPane1); 
 pack(); 
 } 
JTable – Set column width 
1 
2 
3 
4 
5 
jTable1.setModel(model); 
jTable1.getColumnModel().getColumn(0).setPreferredWidth(200); 
jTable1.getColumnModel().getColumn(1).setPreferredWidth(400); 
jTable1.getColumnModel().getColumn(2).setPreferredWidth(100); 
jTable1.getColumnModel().getColumn(3).setPreferredWidth(300); 
JOptionPane 
1 
2 
3 
4 
5 
JOptionPane.showMessageDialog( 
this, 
"Warning !!!", 
"Title", 
JOptionPane.WARNING_MESSAGE); 
public static void showMessageDialog( Component parentComponent, Object message, String title, int messageType) 
1 
2 
3 
4 
5 
JOptionPane.showMessageDialog( 
this, 
"Message", 
"Title", 
JOptionPane.INFORMATION_MESSAGE); 
Message types: 
ERROR_MESSAGE 
INFORMATION_MESSAGE 
WARNING_MESSAGE 
QUESTION_MESSAGE 
PLAIN_MESSAGE 
JOptionPane 
public static int showConfirmDialog( Component parentComponent, Object message, String title, int optionType, int messageType ) 
1 
2 
3 
4 
5 
6 
7 
8 
9 
1011 
12 
13 
int n = JOptionPane.showConfirmDialog( 
this, "Message", "Title", JOptionPane. YES_NO_OPTION , JOptionPane. WARNING_MESSAGE ); 
if ( n== JOptionPane.YES_OPTION) 
{ 
//YES 
} 
else 
{ 
//NO 
} 
Option types: 
DEFAULT_OPTION 
YES_NO_OPTION 
YES_NO_CANCEL_OPTION 
OK_CANCEL_OPTION 
Message types: 
ERROR_MESSAGE 
INFORMATION_MESSAGE 
WARNING_MESSAGE 
QUESTION_MESSAGE 
PLAIN_MESSAGE 
JOptionPane 
1 
2 
3 
4 
5 
6 
7 
8 
9 
1011 
12 
13 
14 
15 
16 
17 
18 
19 
20 
Object[] options = new Object[] {"Yes, please !", "Oh, No!"}; 
 int n = JOptionPane.showOptionDialog( 
 this, 
 "Message" , 
 "Title" , 
 JOptionPane. YES_NO_OPTION , //Optiont type 
 JOptionPane. QUESTION_MESSAGE , //Message type 
 null, //Không dùng custom icon 
 options, //Tiêu đề của các button 
 options[0]); //Button mặc định 
if ( n== JOptionPane.YES_OPTION) 
{ 
//YES 
} 
else 
{ 
//NO 
} 
Fill the data on the JTable 
SWING & JDBC 
Fill data on the JTable 
1 
2 
3 
4 
5 
6 
7 
8 
9 
1011 
12 
13 
14 
15 
16 
17 
18 
19 
20 
package demobasicdbprogramming; 
import java.sql.*; 
import java.util.Properties; 
import javax.swing.table.DefaultTableModel; 
public class DB01_ReadNhanVien extends javax.swing.JFrame { 
 private void LoadData () { 
 String[] columns = new String [] { "Mã NV" , "Họ tên" , 
"Giới tính" , "Địa chỉ" }; 
 DefaultTableModel model = new DefaultTableModel( null , columns); 
 try { 
 //1. Đăng ký driver và tạo kết nối đến CSDL 
 Driver driver = new org.gjt.mm.mysql.Driver(); 
 DriverManager. registerDriver (driver); 
Fill data on the JTable 
1 
2 
3 
4 
5 
6 
7 
8 
9 
1011 
12 
13 
14 
15 
16 
17 
18 
19 
20 
 //2. Tạo kết nối đến CSDL 
 String conString = "jdbc:mysql://localhost:3306/nhanviendb" ; 
 Properties info = new Properties(); 
 info.setProperty( "characterEncoding" , "utf8" ); 
 info.setProperty( "user" , "root" ); 
 info.setProperty( "password" , "" ); 
 Connection connection; 
 connection = DriverManager. getConnection (conString, info); 
 //3. Tạo đối tượng Statement để thực hiện thao tác dữ liệu mong muốn 
 Statement statement = connection.createStatement(); 
 String sql = "SELECT * FROM nhanvien" ; 
 //4. Thực hiện truy xuất (đọc / ghi) 
 statement.execute(sql); 
 ResultSet rs = statement.getResultSet(); 
Fill data on the JTable 
1 
2 
3 
4 
5 
6 
7 
8 
9 
1011 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
 //5. Xử lý kết quả trả về 
 while (rs.next()) { 
 int manv = rs.getInt( "MANV" ); 
 String hoten = rs.getString( "HOTEN" ); 
 String phai = rs.getString( "PHAI" ); 
 String diachi = rs.getString( "DIACHI" ); 
 Object[] items = new Object[] {manv, hoten, phai, diachi}; 
 model.addRow(items); 
 } 
 //6. Đóng kết nối 
 connection.close(); 
 } catch (SQLException ex) { 
 System. out .println(ex); 
 } 
 jTable1 .setModel(model); 
 } 
Fill data on the JTable 
1 
2 
3 
4 
5 
6 
7 
8 
9 
1011 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
 public DB01_ReadNhanVien () { 
 initComponents (); 
 LoadData (); 
 } 
 private void initComponents () { 
  jScrollPane1 = new javax.swing.JScrollPane(); 
 jTable1 = new javax.swing.JTable(); 
  setDefaultCloseOperation (WindowConstants. EXIT_ON_CLOSE ); 
 jTable1 .setBorder(javax.swing.BorderFactory. createLineBorder ( new java.awt.Color(0, 0, 204))); 
 jTable1 .setGridColor( new java.awt.Color(0, 0, 0)); 
 jScrollPane1 .setViewportView( jTable1 ); 
  getContentPane (). add ( jScrollPane1 , BorderLayout. CENTER ); 
  pack (); 
 }  
 private javax.swing.JScrollPane jScrollPane1 ; 
 private javax.swing.JTable jTable1 ; 
} 
Fill data on the JTable 
Xem danh sách nhân viên: 
Fill data on the JTable 
Tìm nhân viên: 
Java Look & Feel 
SWING JAVA LOOK AND FEEL & CUSTOM EVENT 
Java Custom Event 
Metal Look & Feel 
Windows Look & Feel 
Synthetica Look & Feel 
Java Look & Feel 
Metal Look and Feel 
Windows Look and Feel 
3D Look and Feel 
FH Look and Feel 
GTK/Swing Look And Feel 
Metouia look and Feel 
Napkin Look and Feel 
Motif Look and Feel 
Java Look & Feel 
SmoothMetal 
Squareness Look And Feel 
TinyLaF 
InfoNode Look and Feel 
Synthetica Look and Feel 
Oyoaha lookandfeel 
Skin Look And Feel 
Java Look & Feel 
UIManager 
SwingUtilities.updateComponentTreeUI(JComponent com) 
UIManager 
UIManager.setLookAndFeel(LookAndFeel laf) 
UIManager.setLookAndFeel(String name) 
UIManager.setInstalledLookAndFeels(LookAndFeelInfo infos) 
UIManager.getCrossPlatformLookAndFeelClassName(); 
UIManager.getInstalledLookAndFeels(); 
UIManager.getLookAndFeel(); 
UIManager.getSystemLookAndFeelClassName(); 

File đính kèm:

  • pptxbai_giang_lap_trinh_java_chuong_4_lap_trinh_giao_dien_voi_ja.pptx