2011-01-08 33 views
5

Sử dụng Swing, cách tốt nhất để thụt lề một số thành phần bên dưới hộp kiểm hoặc nút radio là gì? Tôi cần phải làm một cái gì đó trong phong cách của hộp thoại Options-> Privacy của Firefox 3.6 nơi một số hộp kiểm được thụt vào dưới một hộp kiểm "chính". Tôi có thể sử dụng bất kỳ bố cục AWT/Swing tiêu chuẩn nào kể cả GroupLayout. Tôi cũng có JGoodies FormLayout có sẵn cho tôi. Tôi đã thử bằng cách sử dụng offset setLeadingColumn trong FormLayout lúc đầu, nhưng nó có vẻ như nó sẽ không hoạt động tốt trừ khi tôi đã thụt vào dưới một Separator. Có lẽ tôi đã làm điều đó sai?Làm cách nào để tôi thụt lề một số thành phần bằng cách sử dụng bố cục Java Swing

Có điều gì giống như cài đặt ngang trong SWT GridLayout không? Điều đó sẽ hoàn hảo.

Tôi đang làm việc với JDK1.6.0_23.

Trả lời

2

Có một số cách để làm điều này:

  1. Đặt mỗi thành phần biên giới: new EmptyBorder (0, 10, 0, 0).

  2. Sử dụng GridBagLayout và sử dụng Inset (0, 10, 0, 0) để đệm cạnh bên trái.

  3. Sử dụng GridBagLayout và có hộp kiểm chính bao gồm hai cột, trong khi các hộp kiểm phụ được bù đắp bằng cách đặt chúng trong cột ngoài cùng bên phải.

  4. Cung cấp biểu tượng hộp kiểm tùy chỉnh có một số khoảng trống được thêm vào cạnh trái của chúng.

, vv

Lời khuyên của tôi sẽ được học các GridBagLayout - đó là hơi khó sử dụng để sử dụng nhưng nó cung cấp cho bạn khá nhiều tất cả sức mạnh bố trí bạn có thể muốn. Công cụ JGoodies rất hữu ích khi bạn muốn có hành vi kích thước cột tự động cụ thể mà GBL sẽ không cung cấp cho bạn mà không có thêm mã nào đó.

0

Bạn sẽ có thể thực hiện điều này tốt với FormLayout, chỉ cần thêm cột khác cho các mục con và có mục chính bao gồm 2 cột.

3

Tạo JPanel cho các thành phần phụ. Sau đó, bạn có thể thêm một EmptyBorder vào bảng điều khiển với các thụt đầu dòng cần thiết.

+0

Cách dễ dàng hơn cho các bản sửa lỗi đơn giản hơn 'GridBagLayout' và sẽ không gây rối với chỉ báo tiêu điểm như' EmptyBorder'. – 2rs2ts

0

Một tùy chọn khác là sử dụng SpringLayout và thêm đệm.

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