Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Khác biệt giữa JFrame và JDialog trong Java

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ểmJFrameJDialog
Loại cửa sổCửa sổ chính (main window)Cửa sổ phụ (dialog)
ModalKhông (luôn modeless)Có thể modal hoặc modeless
Nút điều khiểnĐầy đủ: đóng, thu nhỏ, phóng toChỉ đóng (thường)
Thanh menuHỗ trợKhông hỗ trợ
Kế thừajava.awt.Framejava.awt.Dialog
Dùng choỨng dụng chínhHộp thoại xác nhận, nhập liệu, thông báo