JFrame
- Các thành phần thêm vào frame được quản lý bởi contentPane. Để thêm thành phần vào JFrame, phải dùng contentPane.
- Chứa cửa sổ có tiêu đề, viền, (tùy chọn) thanh menu và thành phần do người dùng chỉ định.
- Có thể di chuyển, thay đổi kích thước, thu nhỏ (iconify). Không phải subclass của JComponent.
- Mặc định hiển thị ở góc trên bên trái màn hình. Dùng
setLocation(x, y) để đặt vị trí cụ thể.
Ví dụ JFrame
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JFrameDemo {
public static void main(String s[]) {
JFrame frame = new JFrame("JFrame Demo");
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
JLabel lbl = new JLabel("JFrame Demo");
lbl.setPreferredSize(new Dimension(175, 100));
frame.getContentPane().add(lbl, BorderLayout.CENTER);
frame.setSize(375, 275);
frame.setVisible(true);
}
}
JDialog
- Rất giống JFrame trừ việc JDialog có thể thiết lập modal (đồng bộ). Modal nghĩa là không cửa sổ nào khác có thể dùng/kích hoạt trong khi JDialog tương ứng đang hiển thị.
- Modal dialogs chặn đầu vào đến các cửa sổ top-level khác; Modeless dialogs cho phép đầu vào đến cửa sổ khác.
- Khác với JFrame, JDialog không có nút thu nhỏ và phóng to ở góc trên bên phải.
Ví dụ JDialog
import javax.swing.JDialog;
import javax.swing.JLabel;
public class JDialogDemo extends JDialog {
public static void main(String[] args) {
try {
JDialogDemo dialog = new JDialogDemo();
dialog.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
public JDialogDemo() {
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
setTitle("Welcome to Tutorials Point");
setBounds(100, 100, 359, 174);
getContentPane().setLayout(null);
JLabel label = new JLabel("Welcome to Tutorials Point");
label.setBounds(86, 37, 175, 29);
getContentPane().add(label);
}
}
Bảng so sánh tóm tắt
| Đặc điểm | JFrame | JDialog |
| Loại cửa sổ | Cửa sổ chính (main window) | Cửa sổ phụ (dialog) |
| Modal | Không (luôn modeless) | Có thể modal hoặc modeless |
| Nút điều khiển | Đầy đủ: đóng, thu nhỏ, phóng to | Chỉ đóng (thường) |
| Thanh menu | Hỗ trợ | Không hỗ trợ |
| Kế thừa | java.awt.Frame | java.awt.Dialog |
| Dùng cho | Ứng dụng chính | Hộp thoại xác nhận, nhập liệu, thông báo |