Tôi đang sử dụng FlowLayout
JPanel
. Bảng điều khiển trông xấu xí khi chiều cao thành phần con là khác nhau. Tôi đang tìm một giải pháp để làm cho chúng xếp hàng đầu (tương tự như valign="top"
với các ô bảng trong HTML).Căn chỉnh hàng đầu cho FlowLayout
Trả lời
Tôi nhận ra câu hỏi này đã được hỏi hơn một năm trước, nhưng cũng giống như tôi, tôi nghĩ nhiều người sẽ vấp ngã trên bài diễn đàn này và bị bỏ lại cố gắng để tạo ra một cách giải quyết như thế một gợi ý trong báo cáo lỗi (không làm việc cho tôi chỉ là fyi).
Dù bằng cách nào thì có câu trả lời hay hơn kể từ JDK 1.6. FlowLayout có phương pháp sau đây:
public void setAlignOnBaseline(boolean alignOnBaseline)
Nếu bạn sử dụng phương pháp này trên FlowLayout của bạn và đặt nó là sự thật, sau đó khi FlowLayout đưa ra các thành phần nó sẽ kiểm tra cơ sở của mỗi thành phần và sắp xếp các thành phần dọc đường cơ sở này.
Nhưng đó không phải là tất cả những gì bạn cần làm.
Các thành phần trong câu hỏi phải ghi đè lên hai phương pháp sau đây theo cách này:
@Override
public Component.BaselineResizeBehavior getBaselineResizeBehavior() {
return Component.BaselineResizeBehavior.CONSTANT_ASCENT;
}
@Override
public int getBaseline(int width, int height) {
return 0;
}
Họ là những phương pháp trong JComponent và bố trí và layoutmanagers sử dụng các phương pháp để xác định làm thế nào để bố trí các thành phần.
Nếu bạn thực hiện các bước được đề cập ở trên, tất cả các thành phần sẽ tự căn chỉnh dọc theo đầu mỗi hàng. Tất nhiên nếu bạn chỉ muốn sử dụng một thành phần như JButton, bạn rõ ràng sẽ phải mở rộng nó để đạt được mục tiêu mong muốn của bạn ... nhưng nó không làm việc nhiều như ghi đè layoutcontainer với một cách giải quyết mà bạn phải gỡ lỗi. IT nhât thi tôi nghi vậy.
Chúc may mắn, -Asaf
+1. Cách giải quyết cũng không hiệu quả với tôi, nhưng tôi nghĩ đó là vì nó tồn tại cho một mục đích khác. Như được nêu trong báo cáo lỗi: * "Ba tùy chọn căn chỉnh dọc sẽ là trên cùng, giữa và dưới. ** Nó sẽ sắp xếp chính xác theo cùng một cách, ** nhưng thả các thành phần vào giữa hoặc dưới cùng của bảng điều khiển ". * – Rempelos
Một người nào đó đã mong muốn điều này, dưới hình thức báo cáo lỗi (cũng liệt kê một giải pháp thay thế).
Có một cái nhìn tại
Ồ. Tôi nghĩ tôi sẽ theo dõi cách giải quyết. Cảm ơn bạn! – mrpaint
Trên thực tế báo cáo lỗi này có một mục đích khác nhau: * "Vui lòng thêm tùy chọn vào bố cục luồng để tôi chỉ định căn chỉnh theo chiều dọc. Ba tùy chọn căn chỉnh dọc sẽ là trên cùng, giữa và dưới. ** theo cách tương tự, ** nhưng thả các thành phần vào giữa hoặc cuối bảng. "Vì vậy, cách giải quyết của liên kết giúp bạn có thể chọn giữa ba tùy chọn cho vị trí dọc của các thành phần (FlowLayout luôn đặt chúng ở trên cùng) nhưng chúng vẫn sẽ được căn giữa với nhau trong trường hợp chúng có chiều cao khác nhau. Chỉ cần chỉ ra ... – Rempelos
Bạn sẽ có thể sử dụng một BoxLayout. Nó hỗ trợ liên kết dọc. Vấn đề duy nhất là bạn cần phải tự chèn các thành phần thanh ngang.
Hoặc bạn có thể thử sử dụng Relative Layout. Trong trường hợp của bạn, bạn sẽ sử dụng:
RelativeLayout rl = new RelativeLayout(RelativeLayout.X_AXIS, 5);
rl.setBorderGap(5);
rl.setAlignment(RelativeLayout.LEADING);
JPanel panel = new JPanel(rl);
panel.add(...);
Chắc chắn tôi đã thử sự liên kết theo chiều dọc nhưng nó đã không làm việc: ( – mrpaint
Điều gì không làm việc? Tôi đã cho bạn hai gợi ý và cả hai công việc.Bạn đã đọc hướng dẫn Swing về "Làm thế nào để sử dụng bố trí hộp "? Nếu bạn cần thêm trợ giúp, hãy đăng SSCCE của bạn: http: // sscce.org – camickr
Cuối cùng, tôi đã mở rộng FlowLayout để làm cho nó hoạt động theo ý muốn của tôi và bây giờ nó rất tuyệt: chỉ mở rộng chiều rộng: D Cảm ơn bạn rất nhiều – mrpaint
- 1. căn chỉnh hàng đầu trong bảng html?
- 2. Java Swing FlowLayout Alignments
- 3. Căn chỉnh phao CSS ở đầu
- 4. Các cột được căn chỉnh đầu ra
- 5. Căn chỉnh các mặt hàng UIToolBar
- 6. Căn chỉnh đầu ra printf trong Java
- 7. Twitter Bootstrap - Sắp thẳng hàng căn chỉnh đầu vào với nhãn bên trong nhóm điều khiển
- 8. UITableViewCell. Làm cách nào để tôi căn chỉnh textLabel thành hàng đầu?
- 9. văn bản căn chỉnh theo chiều dọc trong hàng NSTableView
- 10. Cách căn chỉnh thẳng hàng một TextField trong AS3
- 11. Căn chỉnh nhãn ở dạng bên cạnh đầu vào
- 12. Căn chỉnh văn bản JList
- 13. Cách căn chỉnh phần tử mẫu Căn chỉnh trong PdfPCell
- 14. Căn chỉnh lô đầu ra thành các cột
- 15. Căn chỉnh đầu vào html trên cùng một dòng
- 16. Căn chỉnh các yếu tố đầu vào theo chiều dọc
- 17. Cách căn chỉnh và căn trái các chuỗi văn bản căn chỉnh trong Bash
- 18. Đường căn chỉnh mã?
- 19. WPF: Căn chỉnh ngang
- 20. Android Chỉnh sửa căn chỉnh văn bản
- 21. CSS - Làm cho các div căn chỉnh theo chiều ngang
- 22. Căn chỉnh như bảng nhưng với CSS?
- 23. C# WinForms Căn chỉnh dọc cho TextBox, v.v.
- 24. văn bản căn chỉnh phải trong UIPickerView
- 25. Nhãn căn chỉnh trong UITableViewCell
- 26. căn chỉnh hạt nhân macro
- 27. Cách sắp xếp nhãn theo cách flowlayout?
- 28. Nhãn hộp kiểm căn chỉnh (web)
- 29. Căn giữa nhiều khối nội tuyến với CSS và căn chỉnh hàng cuối cùng sang bên trái
- 30. Văn bản Căn chỉnh cột trong Chế độ xem danh sách: cột đầu tiên không thể được căn giữa
Bạn đã xem MigLayout chưa? –