Java Swing là một phần của Java Foundation Classes (JFC) được sử dụng để tạo các ứng dụng window-based. Nó được xây dựng trên API AWT (Abstract Windowing Toolkit) và được viết hoàn toàn bằng Java.
Không giống như AWT, Java Swing cung cấp các thành phần không phụ thuộc vào nền tảng và nhẹ hơn.
Gói javax.swing cung cấp các lớp cho java swing API như JButton, JTextField, JTextArea, JRadioButton, JCheckbox, JMenu, JColorChooser, v.v.
Nội dung chính
Sự khác nhau giữa AWT và Swing
Có rất nhiều sự khác biệt giữa java awt và swing được đưa ra dưới đây.
No. | Java AWT | Java Swing |
---|---|---|
1) | Các thành phần AWT là phụ thuộc nền tảng. | Các thành phần Java swing là độc lập nền tảng. |
2) | Các thành phần AWT là nặng. | Các thành phần Swing là nhẹ. |
3) | AWT không hỗ trợ plugin. | Swing có hỗ trợ plugin. |
4) | AWT cung cấp ít thành phần hơn Swing. | Swing cung cấp nhiều thành phần mạnh mẽ hơn AWT như tables, lists, scrollpanes, colorchooser, tabbedpane, vv. |
5) | AWT không tuân theo MVC(Model View Controller) trong đó model biểu diễn data, view biểu diễn hiển thị và controller biểu diễn các action để kết nối model với view. | Swing tuân theo mô hình MVC. |
JFC là gì?
Java Foundation Class (JFC) là một bộ các thành phần GUI đơn giản hóa sự phát triển của các ứng dụng desktop.
Phân cấp các lớp Java Swing
Hệ thống phân cấp của API java swing được đưa ra dưới đây.
Các phương thức thường dùng của lớp Component
Các phương thức của lớp Component được sử dụng rộng rãi trong java swing được đưa ra dưới đây.
Phương thức | Mô tả |
---|---|
public void add(Component c) | thêm một thành phần vào thành phần khác. |
public void setSize(int width, int height) | thiết lập kích thước của thành phần. |
public void setLayout(LayoutManager m) | thiết lập trình quản lý bố cục (layout) cho thành phần. |
public void setVisible(boolean b) | thiết lập khả năng hiển thị của thành phần. Nó theo mặc định là false (ẩn) |
Ví dụ về Java Swing
Có hai cách để tạo khung (Frame):
- Bằng cách tạo đối tượng của lớp JFrame.
- Bằng cách kế thừa lớp JFrame.
Chúng ta có thể viết code của Swing bên trong hàm main(), constructor hoặc bất kỳ phương thức nào khác.
Ví dụ Swing Java đơn giản
Chúng ta hãy xem một ví dụ swing đơn giản, nơi chúng ta đang tạo một button và thêm nó vào đối tượng JFrame bên trong phương thức main().
File: FirstSwingExample.java
package vn.viettuts.swing; import javax.swing.JButton; import javax.swing.JFrame; public class FirstSwingExample { public static void main(String[] args) { JFrame f = new JFrame();// tạo thể hiện của JFrame JButton b = new JButton("click");// tạo thể hiện của JButton b.setBounds(130, 50, 100, 40);// trục x , y , width, height f.setTitle("Ví dụ Java Swing"); f.add(b);// thêm button vào JFrame f.setSize(400, 200);// thiết lập kích thước cho của sổ f.setLayout(null);// không sử dụng trình quản lý bố cục f.setVisible(true);// hiển thị cửa sổ } }
Kết quả:
Ví dụ Java Swing - tạo đối tượng của lớp JFrame
Chúng ta cũng có thể viết tất cả các mã tạo JFrame, JButton bên trong constructor.
package vn.viettuts.swing; import javax.swing.JButton; import javax.swing.JFrame; public class JavaSwingExample2 { JFrame f; public JavaSwingExample2() { f = new JFrame();// tạo thể hiện của JFrame JButton b = new JButton("click");// tạo thể hiện của JButton b.setBounds(130, 50, 100, 40); f.add(b);// thêm button vào JFrame f.setSize(400, 200);// thiết lập kích thước cho của sổ f.setLayout(null);// không sử dụng trình quản lý bố cục f.setVisible(true);// hiển thị cửa sổ } }
Ví dụ Java Swing - kế thừa lớp JFrame
Chúng ta cũng có thể kế thừa lớp JFrame, vì vậy không cần phải tạo thể hiện của lớp JFrame.
package vn.viettuts.swing; import javax.swing.JButton; import javax.swing.JFrame; public class JavaSwingExample3 extends JFrame {// kế thừa lớp JFrame public JavaSwingExample3() { JButton b = new JButton("click");// tạo button b.setBounds(130, 50, 100, 40); add(b);// thêm button vào JFrame setSize(400, 200); setLayout(null); setVisible(true); } public static void main(String[] args) { new JavaSwingExample3(); } }