Swing là một trong số những khái niệm quan trọng trong Java .
Nó là một bộ công cụ có khối lượng nhẹ, tương hỗ những nhà lập trình tạo giao diện đồ hoạ người dùng .
Trong bài này chúng ta sẽ đi qua cái khái niệm về Java Swing và cách ứng dụng chúng nhé!
Tóm Tắt
1. Java Swing là gì?
Java Swing là cách gọi rút gọn khi người ta nhắc đến Swing của Java Foundation (JFC). Nó là bộ công cụ GUI mà Sun Microsystems phát triển để xây dựng các ứng dụng tối ưu dùng cho window (bao gồm các thành phần như nút, thanh cuộn,…).
Swing được thiết kế xây dựng trên AWT API và trọn vẹn được viết bằng Java. Tuy nhiên, nó lại khác với AWT ở chỗ bộ công cụ này thuộc loại nền tảng độc lập, gồm có những thành phần nhẹ và phức tạp hơn AWT .
Các gói javax.swing gồm có những lớp cho Java Swing API như JMenu, JButton, JTextField, JRadioButton, JColorChooser, …
Việc xây dựng ứng dụng sẽ trở nên dễ dàng hơn với Java Swing vì chúng ta có các bộ công cụ GUI giúp đỡ công việc.
Swing được chính thức phát hành vào tháng 3/1998. Nó đi kèm với thư viện Swing 1.0 với hơn 250 lớp, 80 tiếp xúc .
Hiện nay số lượng này đã được tăng lên, ở phiên bản Swing 1.4 có 451 lớp và 85 tiếp xúc .
Các bản phát hành Java 2 ( SDK 1.2 và những phiên bản mới hơn ) đều gồm có Swing trong runtime environment .
2. Ứng dụng của Java Swing
Java Swing được dùng để hỗ trợ tạo giao diện đồ hoạ người dùng (với Java).
Bộ công cụ này phân phối những bộ tinh chỉnh và điều khiển nâng cao như thanh trượt, colorpicker, Tree, TabbedPane và bảng tinh chỉnh và điều khiển, ..
Swing có những đặc thù :
- Độc lập với thiết bị
- Có thể tuỳ chỉnh, mở rộng
- Khá nhẹ
- Có thể cấu hình
Ngoài ra bạn cũng hoàn toàn có thể tùy chỉnh những tinh chỉnh và điều khiển xoay một cách thuận tiện mà không ảnh hưởng tác động đến những thành phần khác .
3. Sự khác biệt giữa AWT và Swing
No. | Java AWT | Java Swing |
1) | Phụ thuộc nền tảng (Platform Dependent) | Độc lập với nền tảng (Platform Independent) |
2) | Thành phần của AWT nặng | Thành phần của Swing khá nhẹ |
3) | AWT không hỗ trợ pluggable look and feel. | Swing hỗ trợ pluggable look and feel. |
4) | AWT có ít thành phần hơn Swing | Swing cung cấp nhiều thành phần và các thành phần cũng mạnh mẽ hơn AWT như: bảng, danh sách, cuộn màn hình, trình chọn màu,.. |
5) | AWT không tuân theo cấu trúc MVC (Model View Controller) | Swing theo cấu trúc MVC |
4. Cấu trúc phân cấp lớp Java Swing
Phân cấp của API Java swing như liệt kê ở hình dưới đây :
Chú thích : Tất cả những thành phần trong swing được thừa kế từ lớp Jcomponent như JButton, JComboBox, JList, JLabel đều hoàn toàn có thể được thêm vào lớp Container .
Container là những window như Frame và Dialog. Các container này chỉ hoàn toàn có thể thêm một thành phần vào chính nó .
5. Các phương thức được sử dụng phổ biến của Component Class
Có một số ít phương pháp trong lớp Component được sử dụng khá thông dụng, đó là :
Phương thức | Mục đích |
public void add(Component c) | Bổ sung một thành phần trên một phần khác |
public void setSize(int width,int height) | Để cài đặt và tùy chỉnh kích cỡ của thành phần (chiều rộng, chiều cao) |
public void setLayout(LayoutManager m) | Để cài đặt Layout Manager cho thành phần |
public void setVisible(boolean b) | Để cài đặt tính nhìn thấy được (visible) của thành phần. Theo mặc định là false. |
6. Hướng dẫn học lập trình Java Swing từ A đến Z
Dưới đây là một số ví dụ đơn giản để tạo GUI bằng Swing trong Java:
JButton Class – Lớp JButton
Nó được dùng để tạo ra một nút ( button ) có tên .
Việc sử dụng ActionListener sẽ dẫn đến 1 số ít hành vi khi nút được nhấn .
Nó thừa kế lớp AbstractButton và độc lập với nền tảng .
Ví dụ :
1 2 3 4 5 6 7 8 9 10 11 12 |
import javax.swing.*; public class example { public static void main ( String args [ ] ) { JFrame a = new JFrame ( “ example ” ) ; JButton b = new JButton ( “ click me ” ) ; b. setBounds ( 40,90,85,20 ) ; a.add ( b ) ; a. setSize ( 300,300 ) ; a. setLayout ( null ) ; a. setVisible ( true ) ; } } |
Output :
JTextField Class – Lớp JTextField
Nó thừa kế lớp JTextComponent và dùng để cho phép chỉnh sửa dòng đơn
Ví dụ :
1 2 3 4 5 6 7 8 9 10 11 12 |
import javax.swing.*; public class example { public static void main ( String args [ ] ) { JFrame a = new JFrame ( “ example ” ) ; JTextField b = new JTextField ( “ edureka ” ) ; b. setBounds ( 50,100,200,30 ) ; a.add ( b ) ; a. setSize ( 300,300 ) ; a. setLayout ( null ) ; a. setVisible ( true ) ; } } |
Output :
JScrollBar Class – lớp JScrollBar
Dùng để thêm thanh cuộn ( cả ngang và dọc )
Ví dụ :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import javax.swing.*; class example { example ( ) { JFrame a = new JFrame ( “ example ” ) ; JScrollBar b = new JScrollBar ( ) ; b. setBounds ( 90,90,40,90 ) ; a.add ( b ) ; a. setSize ( 300,300 ) ; a. setLayout ( null ) ; a. setVisible ( true ) ; } public static void main ( String args [ ] ) { new example ( ) ; } } |
Output :
JPanel Class – Lớp JPanel
Kế thừa lớp JComponent, cung ứng khoảng trống cho một ứng dụng ( hoàn toàn có thể đính kèm bất kể thành phần nào khác ) .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import java.awt.*; import javax.swing. * ; public class Example { Example ( ) { JFrame a = new JFrame ( “ example ” ) ; JPanel p = new JPanel ( ) ; p. setBounds ( 40,70,200,200 ) ; JButton b = new JButton ( “ click me ” ) ; b. setBounds ( 60,50,80,40 ) ; p.add ( b ) ; a.add ( p ) ; a. setSize ( 400,400 ) ; a. setLayout ( null ) ; a. setVisible ( true ) ; } public static void main ( String args [ ] ) { new Example ( ) ; } } |
Output :
JMenu Class – Lớp JMenu
Kế thừa lớp JMenuItem, là một thành phần menu kéo xuống ( hiển thị từ thanh menu ) .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import javax.swing.*; class Example { JMenu menu ; JMenuItem a1, a2 ; Example ( ) { JFrame a = new JFrame ( “ Example ” ) ; menu = new JMenu ( “ options ” ) ; JMenuBar m1 = new JMenuBar ( ) ; a1 = new JMenuItem ( “ example ” ) ; a2 = new JMenuItem ( “ example1 ” ) ; menu.add ( a1 ) ; menu.add ( a2 ) ; m1.add ( menu ) ; a. setJMenuBar ( m1 ) ; a. setSize ( 400,400 ) ; a. setLayout ( null ) ; a. setVisible ( true ) ; } public static void main ( String args [ ] ) { new Example ( ) ; } } |
Output:
JList Class – Lớp JList
Kế thừa lớp JComponent, đối tượng người dùng của lớp Jlist đại diện thay mặt cho list những mục văn bản .
Next
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import javax.swing.*; public class Example { Example ( ) { JFrame a = new JFrame ( “ example ” ) ; DefaultListModel l. addElement ( “ first item ” ) ; JList b. setBounds ( 100,100,75,75 ) ; |
Output :
JLabel Class – Lớp JLabel
Được dùng để đặt văn bản trong vùng chứa, lớp JLabel cũng thừa kế lớp JComponent .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import javax.swing.*; public class Example { public static void main ( String args [ ] ) { JFrame a = new JFrame ( “ example ” ) ; JLabel b1 ; b1 = new JLabel ( “ edureka ” ) ; b1. setBounds ( 40,40,90,20 ) ; a.add ( b1 ) ; a. setSize ( 400,400 ) ; a. setLayout ( null ) ; a. setVisible ( true ) ; } } |
Output :
JComboBox Class- Lớp JComboBox
Kế thừa lớp JComponent, dùng để hiển thị menu lựa chọn bật lên .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import javax.swing.*; public class Example { JFrame a ; Example ( ) { a = new JFrame ( “ example ” ) ; string courses [ ] = { “ core java ”, ” advance java ”, “ java servlet ” } ; JComboBox c = new JComboBox ( courses ) ; c. setBounds ( 40,40,90,20 ) ; a.add ( c ) ; a. setSize ( 400,400 ) ; a. setLayout ( null ) ; a. setVisible ( true ) ; } public static void main ( String args [ ] ) { new Example ( ) ; } } |
Output :
Layout Manager – Trình quản lý bố cục
Để sắp xếp những thành phần bên trong vùng chứa, tất cả chúng ta sử dụng Layout Manager .
Có 1 số ít bố cục tổng quan như sau :
- Border layout – Bố cục đường viền
- Flow layout – Bố cục luồng
- GridBag layout – Bố cục dạng khung
Border Layout
Trình quản trị bố cục tổng quan mặc định toàn bộ JFrame là Border Layout .
Nó đặt những thành phần ở tối đa 5 vị trí : trên, dưới, trái, phải và TT .
Flow Layout
Bố cục này đặt những thành phần lần lượt vào một hàng .
Đây là bố cục tổng quan mặc định cho mọi JPanel .
GridBag Layout
GridBag Layout đặt những thành phần trong một lưới, nó được cho phép những thành phần này trải dài hơn 1 ô .
Ví dụ : Dưới đây là một khung chat ở dạng Flow Layout
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 27 28 29 30 31 32 33 34 35 36 37 38 39 |
import javax.swing.*; import java.awt. * ; class Example { public static void main ( String args [ ] ) { JFrame frame = new JFrame ( “ Chat Frame ” ) ; frame. setDefaultCloseOperation ( JFrame. EXIT_ON_CLOSE ) ; frame. setSize ( 400, 400 ) ; JMenuBar ob = new JMenuBar ( ) ; JMenu ob1 = new JMenu ( “ FILE ” ) ; JMenu ob2 = new JMenu ( “ Help ” ) ; ob.add ( ob1 ) ; ob.add ( ob2 ) ; JMenuItem m11 = new JMenuItem ( “ Open ” ) ; JMenuItem m22 = new JMenuItem ( “ Save as ” ) ; ob1.add ( m11 ) ; ob1.add ( m22 ) ; JPanel panel = new JPanel ( ) ; / / the panel is not visible in output JLabel label = new JLabel ( “ Enter Text ” ) ; JTextField tf = new JTextField ( 10 ) ; / / accepts upto 10 characters JButton send = new JButton ( “ Send ” ) ; JButton reset = new JButton ( “ Reset ” ) ; panel.add ( label ) ; / / Components Added using Flow Layout panel.add ( label ) ; / / Components Added using Flow Layout panel.add ( tf ) ; panel.add ( send ) ; panel.add ( reset ) ; JTextArea ta = new JTextArea ( ) ; frame. getContentPane ( ). add ( BorderLayout. SOUTH, panel ) ; frame. getContentPane ( ). add ( BorderLayout. NORTH, tf ) ; frame. getContentPane ( ). add ( BorderLayout. CENTER, ta ) ; frame. setVisible ( true ) ; } } |
Output :
Kết luận:
Trong bài viết trên, tất cả chúng ta đã luận bàn về Java Swing là gì, mạng lưới hệ thống phân cấp những lớp Swing Java .
Với tất cả các thành phần đi kèm với Swing trong Java, việc xây dựng các ứng dụng GUI được tối ưu hóa trở nên dễ dàng hơn.
Hy vọng trải qua bài viết này những bạn đã hiểu về Swing và biết cách ứng dụng nó khi sử dụng ngôn từ lập trình Java .
Và nếu bạn muốn tìm hiểu rõ hơn ngôn ngữ này, có thể tham gia ngay khóa học lập trình Java của Ironhack Việt Nam
Chúc những bạn thành công xuất sắc .
Source: https://final-blade.com
Category : Kiến thức Internet