Bài giảng Lập trình Java cơ sở dữ liệu - Bài 1: Java Swing - Nguyễn Hữu Thể

Graphical User Interface - GUI

 Graphical User Interface (GUI)

 Mô hình giao tiếp kiểu tương tác giữa ứng dụng và user

dạng đồ họa.

 Mỗi ngôn ngữ hỗ trợ cách tạo GUI khác nhau:

• VB, VC++ dùng dạng drag and drop,

• C++ đòi hỏi programmer viết toàn bộ code để tạo GUI,

• Java hỗ trợ sẵn các lớp tạo GUI cho Programmer sử

dụng.

pdf 51 trang yennguyen 840
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình Java cơ sở dữ liệu - Bài 1: Java Swing - Nguyễn Hữu Thể", để 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 cơ sở dữ liệu - Bài 1: Java Swing - Nguyễn Hữu Thể

Bài giảng Lập trình Java cơ sở dữ liệu - Bài 1: Java Swing - Nguyễn Hữu Thể
1 
LẬP TRÌNH JAVA CSDL 
Bài 1 
JAVA SWING 
Nguyễn Hữu Thể 
2 
Nội dung 
 Graphical User Interface 
 JFrame 
 JDialog 
 JDesktopPane & JInternalFrame 
 JPanel 
3 
Graphical User Interface - GUI 
 Các ứng dụng hiện nay trình bày với giao diện đồ họa đẹp mắt. 
 Các ngôn ngữ lập trình hiện nay đã cung cấp các đối tượng đồ 
họa để thực hiện việc này. 
4 
Graphical User Interface - GUI 
 Graphical User Interface (GUI) 
 Mô hình giao tiếp kiểu tương tác giữa ứng dụng và user 
dạng đồ họa. 
 Mỗi ngôn ngữ hỗ trợ cách tạo GUI khác nhau: 
• VB, VC++ dùng dạng drag and drop, 
• C++ đòi hỏi programmer viết toàn bộ code để tạo GUI, 
• Java hỗ trợ sẵn các lớp tạo GUI cho Programmer sử 
dụng. 
Graphical User Interface - GUI 
 GUI = Container + Components 
 There are two types of GUI elements: 
 Component: Components are elementary GUI entities (such 
as Button, Label, and TextField.) 
 Container: Containers (such as Frame, Panel and Applet) 
are used to hold components in a specific layout. A 
container can also hold sub-containers. 
6 
Graphical User Interface - GUI 
 Một phần tử (element) GUI được thiết lập bằng cách sử dụng 
thủ tục sau: 
 Tạo đối tượng 
 Xác định sự xuất hiện ban đầu của đối tượng 
 Chỉ ra nó nằm ở đâu 
 Thêm phần tử vào giao diện trên màn hình 
 Một thành phần (component) GUI là một đối tượng trực quan. 
Người dùng tương tác với đối tượng này thông qua con trỏ 
chuột hay bàn phím. 
7 
Graphical User Interface - GUI 
Ví dụ: 
Panel panel = new Panel(); // Panel is a Container 
Button btn = new Button(); // Button is a Component 
panel.add(btn); // The Panel Container adds a Button Component 
8 
Graphical User Interface - GUI 
 Java cung cấp 2 gói GUI 
 AWT: Abstract Windowing Toolkit 
 Swing 
9 
AWT 
 Top-Level Containters: Frame, Dialog and Applet 
 Each GUI program has a top-level container. The commonly-
used top-level containers in AWT are Frame, Dialog and 
Applet: 
 A Frame provides the "main window" for the GUI 
application, which has a title bar (containing an icon, a title, 
the minimize, maximize/restore-down and close buttons), 
an optional menu bar, and the content display area. 
 To write a GUI program, we typically start with a subclass 
extending from java.awt.Frame to inherit the main window 
as follows: 
Cấu trúc gói AWT 
Cấu trúc gói Swing 
Cấu trúc gói Swing 
Swing 
 Swing là gói thư viện dựa trên mô hình MVC do Java cung 
cấp, dùng để thiết kế giao diện người dùng. 
 Phần lớn, các thành phần (component) của Swing được dẫn 
xuất từ lớp cha là Jcomponent được thừa kế (extends) từ lớp 
Container của AWT. 
 Swing hỗ trợ công nghệ gọi là “Pluggable – Look – And – 
Feel ” (PLAF), nơi mà các thành phần có thể trình bày trên 
mọi hệ điều hành. 
 Ví dụ: trên hệ diều hành linux, một nút (button) có thể nhìn 
giống như trên hệ điều hành Window. 
Swing 
 Swing components support pluggable look-and-feel. You can 
choose between Java look-and-feel and the look-and-feel of 
the underlying OS (e.g., Windows, UNIX or Mac). 
 If the later is chosen, a Swing button runs on the Windows 
looks like a Windows' button and feels like a Window's button. 
Similarly, a Swing button runs on the UNIX looks like a 
UNIX's button and feels like a UNIX's button. 
Swing 
Yêu cầu của GUI 
 Thân thiện với user. 
 Số phần tử (element, component) trên GUI thay đổi tùy thuộc 
vào ứng dụng. 
 Khi user tương tác với phần tử của GUI, ứng dụng phải có 
phản ứng. 
Đưa component vào GUI 
Các bước để đưa 1 component vào GUI (viết code) 
 Tạo 1 đối tượng component phù hợp. 
 Xác định hình thức bên ngoài lúc đầu của component. 
 Định vị component này trên GUI. 
 Thêm component này vào GUI. 
Ví dụ 
Container 
 Container: Đối tượng chứa các element, cho phép vẽ, tô màu 
lên container. 
 Frame và Panel là các class thường dùng. 
 Panel thường dùng để chứa các element trong 1 GUI phức tạp, 
1 Frame có thể chứa nhiều Panel. 
 Panel, Applet thường dùng để tạo 1 ứng dụng nhúng vào 
Browser. 
20 
JFrame 
 JFrame được sử dụng làm giao diện chính trong ứng dụng 
Swing (top-level windows) 
 Hầu hết các ứng dụng Swing được xây dựng từ JFrame 
 Tất cả các đối tượng liên quan tới JFrame được quản lý bởi 
đứa con duy nhất của nó, một thể hiện (instance) của 
JRootPane. 
21 
JFrame - JRootPane 
 JRootPane có 4 phần chính 
22 
JFrame - ContentPane 
 Khi thêm các thành phần (component ) vào JFrame chúng ta 
không thêm trực tiếp 
 Các thành phần sẽ thêm vào ContentPane bằng cách gọi 
phương thức: 
 getContentPane().add(component); 
23 
JFrame - ContentPane 
24 
JFrame - GlassPane 
 Theo mặc định thì GlassPane bị ẩn 
 GlassPane có thể là mọi thành phần trong Swing nhưng thành 
phần mặc định là Jpanel. 
 Để thay đổi thành phần mặc định này sang thành phần khác 
chúng ta sử dụng phương thức 
 setGlassPane(component); 
 Nếu muốn nhìn thấy GlassPane như thế nào thì sử dụng 
phương thức sau: 
 getGlassPane().setvisible(true); 
25 
JFrame – Cấu trúc class 
package jframe; //Tên package 
public class MyFrame extends javax.swing.JFrame { 
 public MyFrame() { 
 initComponents(); 
 } 
 private void initComponents() { 
 //Các thành phần khởi tạo 
 } 
 public static void main(String args[]) { 
 //Gọi thực hiện JFrame 
 } 
} 
26 
JFrame - Cấu trúc class trên Netbean 
package jframe; 
public class MyFrame extends javax.swing.JFrame { 
 public MyFrame() { 
 initComponents(); 
 } 
 private void initComponents() { 
 setDefaultCloseOperation( 
 javax.swing.WindowConstants.EXIT_ON_CLOSE); 
 //... 
 pack(); 
 } 
 public static void main(String args[]) { 
 java.awt.EventQueue.invokeLater(new Runnable() { 
 public void run() { 
 new MyFrame().setVisible(true); 
 } 
 }); 
 } 
} 
27 
JFrame - Một số phương thức 
Constructor 
JFrame() 
Constructs a new frame that is initially invisible. 
JFrame(GraphicsConfiguration gc) 
Creates a Frame in the specified GraphicsConfiguration of a screen device and a blank title. 
JFrame(String title) 
Creates a new, initially invisible Frame with the specified title. 
JFrame(String title, GraphicsConfiguration gc) 
Creates a JFrame with the specified title and the specified GraphicsConfiguration of a screen 
device 
28 
JFrame - Một số phương thức 
public void setDefaultCloseOperation(int operation); 
Phương thức mặc định khi đóng JFrame. 
- 4 kiểu: 
• WindowContants.DO_NOTHING_ON_CLOSE 
• WindowContants.HIDE_ON_CLOSE 
• WindowContants.DISPOSE_ON_CLOSE 
• WindowContants.EXIT_ON_CLOSE 
29 
JFrame - Một số phương thức 
 DO_NOTHING_ON_CLOSE (defined in WindowConstants): 
Don't do anything; require the program to handle the operation 
in the windowClosing method of a registered WindowListener 
object. 
 HIDE_ON_CLOSE (defined in WindowConstants): 
Automatically hide the frame after invoking any registered 
WindowListener objects. 
 DISPOSE_ON_CLOSE (defined in WindowConstants): 
Automatically hide and dispose the frame after invoking any 
registered WindowListener objects. 
 EXIT_ON_CLOSE (defined in JFrame): Exit the application 
using the System exit method. Use this only in applications. 
30 
JFrame - Một số phương thức 
public void setExtendedState(int state); 
Gán trạng thái của JFrame 
 5 kiểu 
– JFrame.NORMAL 
– JFrame.ICONIFIED 
– JFrame.MAXIMIZED_HORIZ 
– JFrame.MAXIMIZED_VERT 
– JFrame.MAXIMIZED_BOTH 
31 
JFrame - Một số phương thức 
 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 setBackground(Color c); 
 Gán màu nền cho JFrame 
 public void setForeground(Color c); 
 Gán màu chữ cho JFrame 
32 
JFrame - Một số phương thức 
 public void setIconImage(Image image); 
 • Gán hình ảnh Icon cho JFrame 
 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 
33 
JFrame - Một số phương thức 
 public void dispose(); 
 • Hủy 
 public Containter getCotentPane() 
 • getContentPane.add 
34 
Ví dụ 1 
35 
Ví dụ 2 
import javax.swing.*; 
public class MyFrame2 extends JFrame { 
 private JButton bt; 
 public MyFrame2() { 
 super(); 
 this.initComponents(); 
 } 
 private void initComponents() { 
 this.setTitle("Ví dụ 2"); //JFrame 
 this.setSize(200, 100); 
 this.setExtendedState(JFrame.NORMAL); 
 this.bt=new JButton(); //JButon 
 this.bt.setText("Button Hello"); 
 this.add(this.bt); 
 } 
 public static void main(String[] args) { 
 MyFrame2 frm = new MyFrame2(); 
 frm.setVisible(true); 
 } 
} 
Ví dụ 3 – Tool Netbean 
package jframe; 
public class MyFrame2 extends javax.swing.JFrame { 
 public MyFrame2() { 
 initComponents(); 
 } 
 private void initComponents() { //  } 
 public static void main(String args[]) { 
 java.awt.EventQueue.invokeLater(new Runnable() { 
 public void run() { 
 new MyFrame2().setVisible(true); 
 } 
 }); 
 } 
 private javax.swing.JButton btHello; 
} 
36 
private void initComponents() { 
 btHello = new javax.swing.JButton(); 
 setDefaultCloseOperation( 
 javax.swing.WindowConstants.EXIT_ON_CLOSE); 
 setTitle("Vi du 2"); 
 setFont(new java.awt.Font("Tahoma", 0, 10)); 
 btHello.setText("Button Hello"); 
 javax.swing.GroupLayout layout = new 
 javax.swing.GroupLayout(getContentPane()); 
 getContentPane().setLayout(layout); 
 layout.setHorizontalGroup(layout.createParallelGroup( 
 javax.swing.GroupLayout.Alignment.LEADING) 
 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, 
 layout.createSequentialGroup() 
 .addContainerGap(67, Short.MAX_VALUE) 
 .addComponent(btHello).addGap(64, 64, 64)) 
 ); 
 layout.setVerticalGroup(layout.createParallelGroup( 
 javax.swing.GroupLayout.Alignment.LEADING) 
 .addGroup(layout.createSequentialGroup() 
 .addGap(32, 32, 32).addComponent(btHello) 
 .addContainerGap(39, Short.MAX_VALUE)) 
 ); 
 pack(); 
 } 
37 
JDialog 
 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 
38 
JDialog – Cấu trúc class 
public class MyDialogForm extends javax.swing.JDialog { 
 public MyDialogForm(java.awt.Frame parent, boolean modal) { 
 super(parent, modal); 
 initComponents(); 
 } 
 private void initComponents() { 
 // 
 } 
 public static void main(String args[]) { 
 // 
 } 
} 
39 
JDialog 
public class MyDialogForm extends javax.swing.JDialog { 
 public MyDialogForm(java.awt.Frame parent, boolean modal) { 
 super(parent, modal); 
 initComponents(); 
 } 
 private void initComponents() { 
 setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); 
 // 
 pack(); 
 } 
 public static void main(String args[]) { 
 java.awt.EventQueue.invokeLater(new Runnable() { 
 public void run() { 
 MyDialogForm dialog = new MyDialogForm( 
 new javax.swing.JFrame(), true); 
 dialog.addWindowListener(new java.awt.event.WindowAdapter() { 
 @Override 
 public void windowClosing(java.awt.event.WindowEvent e) { 
 System.exit(0); 
 } 
 }); 
 dialog.setVisible(true); 
 } 
 }); 
 } 
} 
40 
JDialog with Netbean 
Hiển thị JDialog 
//JFrame hoặc JDialog khác gọi 
private void jbuttonActionPerformed(ActionEvent evt){ 
 DialogName dlg=new DialogName (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ó) 
} 
41 
JDialog - Một số phương thức 
public void setDefaultCloseOperation(int operation); 
Gán phương thức mặc định khi người dùng đóng Dialog 
Có 3 lựa chọn sau: 
– WindowContants.DO_NOTHING_ON_CLOSE 
– WindowContants.HIDE_ON_CLOSE 
– WindowContants.DISPOSE_ON_CLOSE 
42 
JDialog - Một số phương thức 
 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 JDialog 
 public void setBackground(Color c); 
 Gán màu nền cho JFrame 
 public void setForeground(Color c); 
 Gán màu chữ cho JFrame 
43 
JDialog - Một số phương thức 
 public void setIconImage(Image image); 
 Gán hình ảnh Icon cho JFrame 
 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 
44 
JDialog - Một số phương thức 
 public void setModal(boolean modal); 
 true: Modal 
 false : Modeless 
 public void dispose(); 
 Hủy 
 public Containter getCotentPane() 
 getContentPane.add 
 Tương tự cho các phương thức get/is 
45 
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 chứa các JInternalFrame bên trong 
46 
JDesktopPane - Một số phương thức 
 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 tro 
 JDesktopPane() 
 Constructor 
47 
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 
48 
JInternalFrame – Một số phương thức 
 Các phương thức của JInternalFrame tương tự như JFrame 
49 
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. 
50 
JPanel 
 Constructors 
 Panel(): tạo 1 panel với bố cục mặc định. 
 Panel(LayoutManager layout): tạo 1 panel với bố cục đã 
biết. 
 Methods 
 add (component) // thêm 1 component vào panel 
 setLayout(LayoutManager layout) //chọn kiểu bố trí 
components 
51 

File đính kèm:

  • pdfbai_giang_lap_trinh_java_co_so_du_lieu_bai_1_java_swing_nguy.pdf