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

Khi nào sử dụng phương thức pack() trong Java Swing

pack() vs setSize()

pack() (từ lớp Window) tự động tính toán kích thước cửa sổ sao cho tất cả component con hiển thị ở kích thước ưu tiên (preferredSize). setSize() ép buộc kích thước cố định.

Tại sao nên dùng pack()?

  • Layout manager lo liệu kích thước component, pack() tôn trọng điều đó.
  • Tự động thích ứng cross-platform (font, DPI, look-and-feel khác nhau).
  • Tránh hard-code kích thước gây truncation hoặc khoảng trống thừa.

Ví dụ

import java.awt.*;
import javax.swing.*;

public class PackMethodDemo extends JFrame {
    public PackMethodDemo() {
        setTitle("Demo pack() method");
        setLayout(new FlowLayout());

        // Thêm 5 button
        for (int i = 1; i <= 5; i++) {
            add(new JButton("Button " + i));
        }

        pack(); // Tự động resize frame vừa đủ chứa 5 button
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(PackMethodDemo::new);
    }
}

Kết quả

Khi nào sử dụng phương thức pack() trong Java Swing

Lưu ý: Gọi pack() sau khi thêm tất cả component và trước setVisible(true). Nếu gọi setSize() sau pack(), kích thước sẽ bị ghi đè.