JPanel Padding trong Java


107

Tôi có một câu hỏi định dạng cho ứng dụng Java swing của mình. Nó sẽ khá đơn giản, nhưng tôi đang gặp khó khăn trong việc tìm kiếm bất kỳ trợ giúp nào (Mọi chủ đề dường như liên quan đến việc xóa bất kỳ phần đệm mặc định nào trong JPanel). Văn bản trong các JPanels khác nhau của tôi ôm sát các cạnh và trên cùng, chạm vào các đường viền màu: làm cách nào để thêm phần đệm? Cảm ơn bạn.

Câu trả lời:


234

Đặt một EmptyBorderxung quanh của bạn JPanel.
Thí dụ:

JPanel p =new JPanel();
p.setBorder(new EmptyBorder(10, 10, 10, 10));

45
hoặc bạn có thể có thêm một số đệm bao quanh đường viền hiện có:p.setBorder(BorderFactory.createCompoundBorder(new EmptyBorder(10, 10, 10, 10), new EtchedBorder()));
Synox

Điều gì xảy ra khi Cửa sổ được thay đổi kích thước? Giải pháp này là không tốt sau đó là nó?
Andrew S

@Synox Huyền thoại thực sự! Lưu ý rằng bạn có thể đặt EmptyBorder như tham số cuối cùng cho đệm nội
Hunter S

3

Khi bạn cần đệm bên trong JPanelnói chung, bạn thêm đệm bằng trình quản lý bố cục mà bạn đang sử dụng. Có những trường hợp bạn chỉ có thể mở rộng đường viền của JPanel.


1
Thêm phần đệm vào trình quản lý bố cục (Trong trường hợp của tôi, GridLayout) thêm phần đệm vào giữa các bảng liền kề, nhưng không phải trong một bảng riêng lẻ. Nhưng một biên giới sẽ làm được, cảm ơn bạn đã giúp đỡ.
Connor

3

Tôi sẽ giả sử JPanel của bạn chứa JTextField, vì lợi ích của bản demo.

Các thành phần đó cung cấp JTextComponent#setMargin()phương pháp dường như là những gì bạn đang tìm kiếm.

Nếu bạn đang tìm kiếm một đường viền trống có kích thước bất kỳ xung quanh văn bản của mình, hãy sử dụng EmptyBorder


0
JPanel p=new JPanel();  
GridBagLayout layout=new GridBagLayout(); 
p.setLayout(layout); 
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill=GridBagConstraints.HORIZONTAL; 
gbc.gridx=0;   
gbc.gridy=0;   
p2.add("",gbc);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.