Java Swing là gì? Cách học lập trình Java Swing cơ bản | Ironhack VN

Ngôn ngữ lập trình Java là một ngôn từ lập trình có nhu yếu sử dụng ngày càng cao, do đó việc nắm vững toàn bộ những khái niệm trong lập trình Java trở nên vô cùng quan trọng .
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é!

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 :
java swing là gì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 :
lập trình java swing

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 :
swing trong java

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 :
java swing cơ bản

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 :
swing java

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:

java swing là gì

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 = new DefaultListModel< >();

l. addElement ( “ first item ” ) ;
l. addElement ( “ second item ” ) ;

JList b = new JList< >(l);

b. setBounds ( 100,100,75,75 ) ;
a.add ( b ) ;
a. setSize ( 400,400 ) ;
a. setVisible ( true ) ;
a. setLayout ( null ) ;
}
public static void main ( String args [ ] )
{
new Example ( ) ;
}
}

Output :
code swing

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 :
swing code

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 :
java swing code

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 :

  1. Border layout – Bố cục đường viền
  2. Flow layout – Bố cục luồng
  3. 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 .
Quản lý bố cục mặc định swing java

Flow Layout

Bố cục này đặt những thành phần lần lượt vào một hàng .
code java swingĐâ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 ô .
java swing cde là gì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 :
Khung chat ở dạng Flow Layout swing

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 .