Java Swing là một bộ thư viện giao diện người dùng (UI) trong Java. Nó cung cấp các lớp và các công cụ để xây dựng các giao diện người dùng đa nền tảng cho các ứng dụng Java. Java Swing được viết trên cơ sở của AWT (Abstract Window Toolkit) và cho phép bạn xây dựng các giao diện người dùng đẹp, đa nền tảng và tùy chỉnh hơn. Nó cung cấp các thành phần giao diện người dùng, như các nút, thanh trượt, bảng và hộp thoại, và cung cấp các tính năng như sự kiện và xử lý sự kiện, hỗ trợ đồ họa và hiệu ứng.
Là một phần của Java Foundation Classes (JFC) được sử dụng để tạo các ứng dụng dựa trên cửa sổ . Nó được xây dựng trên API AWT (Bộ công cụ lướt gió trừu tượng) và hoàn toàn được viết bằng java.
Không giống như AWT, Java Swing cung cấp các thành phần nhẹ và độc lập với nền tảng.
Gói javax.swing cung cấp các lớp cho API java swing như JButton, JTextField, JTextArea, JRadioButton, JCheckbox, JMenu, JColorChooser, v.v.
Các bài viết liên quan:
Lịch sử phát triển của java swing
Java Swing được phát triển bởi Sun Microsystems (hiện tồn Oracle) và được ra mắt vào năm 1997 với phiên bản Java Development Kit (JDK) 1.2. Nó đã thay thế bộ thư viện giao diện người dùng cũ hơn của Java, là Abstract Window Toolkit (AWT), với nhiều tính năng mới và tùy chỉnh hơn.
Trong những năm đầu tiên sau ra mắt, Java Swing đã gặp một số vấn đề về hiệu suất và tương thích với các hệ điều hành khác nhau. Tuy nhiên, các bản cập nhật và cải tiến đã được thực hiện trong những năm sau đó để khắc phục những vấn đề này.
Hiện nay, Java Swing vẫn được sử dụng trong rất nhiều ứng dụng Java và là một trong những bộ thư viện giao diện người dùng phổ biến nhất trong lập trình Java.
Sự khác biệt giữa AWT và Swing
Có nhiều điểm khác biệt giữa java awt và swing được đưa ra bên dưới.
No. | Java AWT | Java Swing |
1) | Các thành phần AWT phụ thuộc vào nền tảng . | Các thành phần của Java swing độc lập với nền tảng . |
2) | Các thành phần AWT rất nặng . | Các thành phần của xích đu có trọng lượng nhẹ . |
3) | AWT không hỗ trợ giao diện có thể cắm được . | Swing hỗ trợ giao diện có thể cắm được . |
4) | AWT cung cấp ít thành phần hơn Swing. | Swing cung cấp các thành phần mạnh mẽ hơn như bảng, danh sách, màn hình cuộn, trình chọn màu, tabbedpane, v.v. |
5) | AWT không tuân theo MVC (Model View Controller) trong đó mô hình đại diện cho dữ liệu, khung nhìn đại diện cho bản trình bày và bộ điều khiển hoạt động như một giao diện giữa mô hình và chế độ xem. | Swing theo MVC . |
JFC là gì
Các lớp nền tảng Java (JFC) là một tập hợp các thành phần GUI giúp đơn giản hóa việc phát triển các ứng dụng máy tính để bàn.
Bạn có biết
- Làm thế nào để tạo tệp jar runnable trong java?
- Làm thế nào để hiển thị hình ảnh trên một nút đang xoay?
- Làm cách nào để thay đổi màu thành phần bằng cách chọn màu từ ColorChooser?
- Làm thế nào để hiển thị đồng hồ kỹ thuật số trong hướng dẫn swing?
- Làm thế nào để tạo một notepad trong swing?
- Làm thế nào để tạo trò chơi câu đố và trò chơi câu đố pic trong xích đu?
- Làm thế nào để tạo trò chơi tic tac toe trong swing?
Hệ thống phân cấp của các lớp Java Swing
Phân cấp của API java swing được đưa ra bên dưới.
Các phương thức thường được sử dụng của lớp Thành phần
Các phương thức của lớp Thành phần được sử dụng rộng rãi trong java swing được đưa ra bên dưới.
Method | Description |
public void add(Component c) | thêm một thành phần trên một 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) | đặt trình quản lý bố cục 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ó là sai mặc định. |
Các kiến thức cần nắm của java swing
Để sử dụng Java Swing để thiết kế giao diện người dùng, các kiến thức cần nắm bao gồm:
- Java Core: Java Swing là một thư viện giao diện người dùng trong Java, do đó cần có kiến thức vững về các khái niệm cơ bản của ngôn ngữ lập trình Java.
- Giao diện người dùng: Cần nắm vững các khái niệm về giao diện người dùng, như hệ thống layout, các thành phần giao diện người dùng (như button, label, text field, v.v.), sự kiện và xử lý sự kiện.
- Java JButton
- Java JOptionPane
- Java JList
- Java JTable
- Java JComboBox
- Java JRadioButton
- Java JCheckBox
- Java JPasswordField
- Java JTextArea
- Java JTextField
- Java JLabel
- Java JDialog
- Java JSpinner
- Java JSlider
- Java JTabbedPane
- Java JTree
- Java JProgressBar
- Java JSeparator
- Java JCheckBoxMenuItem
- Java JPopupMenu
- Java JScrollBar
- Java JEditorPane
- Java JDesktopPane
- Java JLayeredPane
- Java JFrame
- Java JViewport
- Java JToolBar
- Java JComponent
- Java JToggleButton
- Java JFileChooser
- Java JPanel
- Java JRootPane
- Java JTextPane
- Java JSplitPane
- Java JScrollPane
- Java Swing API: Cần hiểu các lớp và các phương thức của Java Swing API để tạo các thành phần giao diện người dùng và xử lý sự kiện.
- Design patterns: Java Swing sử dụng các design pattern để xây dựng các giao diện người dùng, như Model-View-Controller (MVC) pattern.
- JavaFX: JavaFX là một thư viện giao diện người dùng mới hơn của Java, có thể sử dụng thay thế cho Java Swing, cũng cần biết về nó.
- Các hướng dẫn khác:
Ví dụ về Java Swing
Có hai cách để tạo khung:
- Bằng cách tạo đối tượng của lớp Frame (liên kết)
- Bằng cách mở rộng lớp Frame (kế thừa)
Chúng ta có thể viết mã của swing bên trong hàm main (), hàm tạo hoặc bất kỳ phương thức nào khác.
Ví dụ về Java Swing đơn giản
Hãy xem một ví dụ xoay đơn giản trong đó chúng ta đang tạo một nút và thêm nó vào đối tượng JFrame bên trong phương thức main ().
import javax.swing.*; public class FirstSwingExample { public static void main(String[] args) { JFrame f=new JFrame();//creating instance of JFrame JButton b=new JButton("click");//creating instance of JButton b.setBounds(130,100,100, 40);//x axis, y axis, width, height f.add(b);//adding button in JFrame f.setSize(400,500);//400 width and 500 height f.setLayout(null);//using no layout managers f.setVisible(true);//making the frame visible } }
Ví dụ về Swing by Association bên trong constructor
Chúng ta cũng có thể viết tất cả các mã tạo JFrame, JButton và lệnh gọi phương thức bên trong hàm tạo java.
File: Simple.java
import javax.swing.*; public class Simple { JFrame f; Simple(){ f=new JFrame();//creating instance of JFrame JButton b=new JButton("click");//creating instance of JButton b.setBounds(130,100,100, 40); f.add(b);//adding button in JFrame f.setSize(400,500);//400 width and 500 height f.setLayout(null);//using no layout managers f.setVisible(true);//making the frame visible } public static void main(String[] args) { new Simple(); } }
SetBounds (int xaxis, int yaxis, int width, int height) được sử dụng trong ví dụ trên để đặt vị trí của nút.
Ví dụ đơn giản về Swing theo kế thừa
Chúng ta cũng có thể kế thừa lớp JFrame, vì vậy không cần tạo thể hiện của lớp JFrame một cách rõ ràng.
File: Simple2.java
import javax.swing.*; public class Simple2 extends JFrame{//inheriting JFrame JFrame f; Simple2(){ JButton b=new JButton("click");//create button b.setBounds(130,100,100, 40); add(b);//adding button on frame setSize(400,500); setLayout(null); setVisible(true); } public static void main(String[] args) { new Simple2(); }}