Lớp javax.swing.JFrame là một loại vùng chứa kế thừa lớp java.awt.Frame. JFrame hoạt động giống như cửa sổ chính, nơi các thành phần như nhãn, nút, trường văn bản được thêm vào để tạo GUI.
Không giống như Frame, JFrame có tùy chọn ẩn hoặc đóng cửa sổ với sự trợ giúp của phương thức setDefaultCloseOperation (int).
Các bài viết khác:
Giới thiệu về JFrame trong Java Swing
JFrame là một lớp trong thư viện Java Swing được sử dụng để tạo và quản lý cửa sổ giao diện người dùng trong ứng dụng Java. Nó là một thành phần chính của mô hình MVC (Model-View-Controller) trong Java Swing.
JFrame cung cấp một cửa sổ đồ họa đơn giản và linh hoạt, cho phép bạn tạo giao diện người dùng đa dạng và tương tác với người dùng. Bằng cách sử dụng JFrame, bạn có thể tạo các ứng dụng desktop đa nền tảng, từ ứng dụng đơn giản cho đến các ứng dụng phức tạp.
Xem thêm JRootPane trong Java swing
Một số tính năng quan trọng của JFrame bao gồm:
- Quản lý cửa sổ: JFrame cho phép bạn quản lý cửa sổ giao diện người dùng, bao gồm kích thước, vị trí, tiêu đề và các thuộc tính khác của cửa sổ.
- Bố cục: Bằng cách sử dụng JFrame, bạn có thể xây dựng bố cục giao diện người dùng bằng cách thêm các thành phần như các nút, hộp văn bản, bảng và các thành phần khác vào cửa sổ.
- Xử lý sự kiện: JFrame cho phép bạn xử lý sự kiện người dùng như nhấp chuột, nhập liệu từ bàn phím và các sự kiện khác. Bằng cách sử dụng các phương thức và lớp lắng nghe sự kiện, bạn có thể phản ứng và xử lý các tương tác của người dùng.
- Tùy chỉnh giao diện: JFrame cho phép bạn tùy chỉnh giao diện bằng cách thay đổi các thuộc tính như màu nền, hình nền, phông chữ và các yếu tố khác của các thành phần trong cửa sổ.
Với những tính năng và linh hoạt của nó, JFrame là một công cụ mạnh mẽ để xây dựng giao diện người dùng đa dạng trong ứng dụng Java Swing.
Class
Modifier and Type | Class | Description |
protected class | JFrame.AccessibleJFrame | Lớp này thực hiện hỗ trợ khả năng truy cập cho lớp JFrame. |
Fields
Modifier and Type | Field | Description |
protected AccessibleContext | accessibleContext | Thuộc tính ngữ cảnh có thể truy cập. |
static int | EXIT_ON_CLOSE | Thao tác đóng cửa sổ mặc định của ứng dụng thoát. |
protected JRootPane | rootPane | Cá thể JRootPane quản lý contentPane và menuBar tùy chọn cho khung này, cũng như glassPane. |
protected boolean | rootPaneCheckingEnabled | Nếu đúng thì các lệnh gọi thêm và setLayout sẽ được chuyển tiếp đến contentPane. |
Constructors
Constructor | Description |
JFrame() | Nó xây dựng một khung mới mà ban đầu là vô hình. |
JFrame(GraphicsConfiguration gc) | Nó tạo một Frame trong GraphicsConfiguration được chỉ định của thiết bị màn hình và một tiêu đề trống. |
JFrame(String title) | Nó tạo ra một Frame mới, ban đầu vô hình với tiêu đề được chỉ định. |
JFrame(String title, GraphicsConfiguration gc) | Nó tạo ra một JFrame với tiêu đề được chỉ định và GraphicsConfiguration được chỉ định của một thiết bị màn hình. |
Useful Methods
Modifier and Type | Method | Description |
protected void | addImpl(Component comp, Object constraints, int index) | Thêm Thành phần con được chỉ định. |
protected JRootPane | createRootPane() | Được gọi bởi các phương thức khởi tạo để tạo rootPane mặc định. |
protected void | frameInit() | Được gọi bởi các hàm tạo để init JFrame đúng cách. |
void | setContentPane(Containe contentPane) | Nó đặt thuộc tính contentPane |
static void | setDefaultLookAndFeelDecorated(boolean defaultLookAndFeelDecorated) | Cung cấp gợi ý về việc các JFrame mới được tạo có nên có trang trí Cửa sổ của chúng (chẳng hạn như đường viền, tiện ích để đóng cửa sổ, tiêu đề …) được cung cấp bởi giao diện hiện tại hay không. |
void | setIconImage(Image image) | Nó đặt hình ảnh được hiển thị làm biểu tượng cho cửa sổ này. |
void | setJMenuBar(JMenuBar menubar) | Nó thiết lập thanh thực đơn cho khung này. |
void | setLayeredPane(JLayeredPane layeredPane) | Nó đặt thuộc tính LayeredPane. |
JRootPane | getRootPane() | Nó trả về đối tượng rootPane cho khung này. |
TransferHandler | getTransferHandler() | Nó nhận thuộc tính transferHandler. |
Xem thêm Giao thức Mạng trong TCP/IP
Cách sử dụng JFrame trong ứng dụng
Để sử dụng JFrame trong ứng dụng của bạn, bạn có thể tuân theo các bước sau:
- Import các package cần thiết:
import javax.swing.JFrame; import javax.swing.JLabel;
- Tạo một lớp chứa phương thức main():
public class MyApp { public static void main(String[] args) { // Code của bạn sẽ được viết trong phần này } }
- Tạo một đối tượng JFrame:
JFrame frame = new JFrame("Ứng dụng của tôi");
Trong đó, “Ứng dụng của tôi” là tiêu đề của cửa sổ JFrame.
- Thêm các thành phần vào JFrame (ví dụ: JLabel):
JLabel label = new JLabel("Chào mừng đến với ứng dụng của tôi"); frame.getContentPane().add(label);
Bạn có thể thêm các thành phần khác như JButton, JTextField, JTable, v.v. vào JFrame theo nhu cầu của bạn.
- Thiết lập thuộc tính của JFrame:
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Đóng ứng dụng khi đóng cửa sổ frame.setSize(400, 300); // Đặt kích thước cửa sổ frame.setVisible(true); // Hiển thị cửa sổ
Bạn có thể tùy chỉnh các thuộc tính khác như vị trí, màu nền, v.v.
- Chạy ứng dụng:
MyApp.main(null);
Trên đây là một ví dụ cơ bản về cách sử dụng JFrame trong ứng dụng Java Swing. Bạn có thể tùy chỉnh và mở rộng nó theo nhu cầu của mình để xây dựng giao diện người dùng phức tạp hơn.
Xem thêm JComponent trong java swing
Xử lý sự kiện trên JFrame
Để xử lý sự kiện trên JFrame, bạn có thể sử dụng các lớp lắng nghe sự kiện (event listener) và gắn kết chúng với các thành phần trong JFrame. Dưới đây là một ví dụ về cách xử lý sự kiện nhấn nút trên JFrame:
- Import các package cần thiết:
import javax.swing.JFrame; import javax.swing.JButton; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;
- Tạo một lớp chứa phương thức main():
public class MyApp { public static void main(String[] args) { // Tạo JFrame JFrame frame = new JFrame("Ứng dụng của tôi"); // Tạo JButton JButton button = new JButton("Click me"); // Gắn lắng nghe sự kiện với JButton button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // Xử lý sự kiện khi nút được nhấn System.out.println("Nút đã được nhấn"); } }); // Thêm JButton vào JFrame frame.getContentPane().add(button); // Thiết lập thuộc tính của JFrame frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400, 300); frame.setVisible(true); } }
Trong ví dụ trên, chúng ta đã tạo một JButton và gắn lắng nghe sự kiện ActionListener cho nó. Khi nút được nhấn, phương thức actionPerformed() sẽ được gọi và chúng ta có thể xử lý các hành động mong muốn trong đó.
Bạn có thể sử dụng các lớp lắng nghe sự kiện khác như MouseListener, KeyListener, v.v., tùy thuộc vào các sự kiện mà bạn muốn xử lý trên JFrame.
Xem thêm Java Swing Tutorial – hướng dẫn
Tùy chỉnh giao diện JFrame
Để tùy chỉnh giao diện JFrame trong ứng dụng Java Swing, bạn có thể sử dụng các phương thức và thuộc tính của lớp JFrame. Dưới đây là một số ví dụ về cách tùy chỉnh giao diện JFrame:
- Thiết lập kích thước cửa sổ:
frame.setSize(500, 400); // Đặt kích thước cửa sổ frame.setResizable(false); // Không cho phép thay đổi kích thước cửa sổ
- Đặt vị trí cửa sổ:
frame.setLocationRelativeTo(null); // Hiển thị cửa sổ ở giữa màn hình frame.setLocation(200, 100); // Đặt vị trí cửa sổ tại tọa độ (x, y)
- Đặt tiêu đề của cửa sổ:
frame.setTitle("Ứng dụng của tôi"); // Đặt tiêu đề cửa sổ
- Thiết lập màu nền của cửa sổ:
frame.getContentPane().setBackground(Color.WHITE); // Đặt màu nền của cửa sổ
- Đóng ứng dụng khi đóng cửa sổ:
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- Thêm hình ảnh biểu tượng cho cửa sổ:
ImageIcon icon = new ImageIcon("path/to/icon.png"); frame.setIconImage(icon.getImage());
- Thay đổi kiểu giao diện mặc định:
try { UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel"); } catch (Exception ex) { ex.printStackTrace(); }
- Hiển thị cửa sổ:
frame.setVisible(true);
Bạn có thể tùy chỉnh các thuộc tính và phương thức khác của lớp JFrame để đạt được giao diện mong muốn cho cửa sổ trong ứng dụng của bạn.