2013-07-29 49 views
11

Tôi muốn thêm đệm vào một số JPanel s. Tôi đã tìm thấy câu trả lời này: https://stackoverflow.com/a/5328475/1590323Cách thêm đệm vào JPanel với đường viền

Nó hoạt động tốt cho bảng điều khiển không có đường viền. Nhưng làm thế nào để tôi làm điều đó cho một bảng điều khiển đã có một biên giới? (A TitledBorder trong trường hợp này)

tôi đã cố gắng:

JPanel mypanel = new MyPanel(); // Panel that I am going to add a TitledBorder to, but needs padding 
mypanel.setBorder(new EmptyBorder(10,10,10,10)); 
JPanel mypanel_container = new JPanel(); 
TitledBorder border = BorderFactory.createTitledBorder(BorderFactory.createRaisedBevelBorder(), "My panel"); 
border.setTitleJustification(TitledBorder.LEADING); 
mypanel_container.setBorder(border); 
mypanel_container.add(mypanel); 
this.add(mypanel_container); 

(Nói tóm lại: Thêm một EmptyBorder vào bảng điều rằng cần phải có một TitledBorder, sau đó thực hiện một bảng điều khiển với TitledBorder và thêm bảng điều khiển đầu tiên và sau đó sử dụng bảng điều khiển đó)

Nhưng sau đó tôi có cách đệm quá lớn bỏ qua các giá trị contructor của EmptyBorder.

Vì vậy, làm cách nào để thêm đệm vào JPanel với đường viền đồ họa?

+0

+1, với công việc khó khăn bạn đã thực hiện trước khi đăng câu hỏi :-), như đã nêu trước đây sẽ đến trong một thời gian –

+0

@nIcEcOw Cảm ơn :-) –

Trả lời

23

Bạn có thể xem CompoundBorder.

Một lớp Border hợp sử dụng để soạn hai Border đối tượng vào một khung đơn bằng cách xếp lồng một đối tượng Border bên trong insets của một đối tượng Border bên ngoài. Ví dụ, lớp này có thể được sử dụng để thêm khoảng cách lề trống để một thành phần với một biên giới trang trí hiện có:

Border border = comp.getBorder(); 
Border margin = new EmptyBorder(10,10,10,10); 
comp.setBorder(new CompoundBorder(border, margin)); 

Tất nhiên, bạn cũng có thể sử dụng BorderFactory#createCompoundBorder(border, margin).

+2

Cảm ơn, 'CompoundBorder' chỉ là những gì tôi cần! –

+0

Bạn được chào đón :) (+1 cho câu hỏi của bạn, cùng một lý do được nói bởi nIcE cOw) – NiziL

+0

Không làm việc cho tôi. Không chắc chắn lý do tại sao? – Paul

Các vấn đề liên quan