Làm cách nào để hạn chế chiều rộng xem JScrollPanel
? Tôi không muốn cuộn ngang xảy ra trong mọi trường hợp. Tôi đã cố gắng cung cấp riêng JViewport
nhưng điều đó không giúp ích nhiều.giới hạn chiều rộng xem JScrollPane
private static class WidthRestrictingViewport extends JViewport {
private Container contents;
public WidthRestrictingViewport(final Container cnts) {
contents = cnts;
}
@Override
public Dimension getPreferredSize() {
if (getParent() instanceof JScrollPane) {
JScrollPane sp = (JScrollPane) getParent();
return new Dimension(sp.getWidth(), contents.getHeight());
}
return super.getPreferredSize();
}
@Override
public Dimension getMaximumSize() {
return getPreferredSize();
}
}
Và mã mà tạo JScrollPane
Container fpdp = ....
JScrollPane sp = new JScrollPane();
sp.setViewport(new WidthRestrictingViewport(fpdp));
sp.setViewportView(fpdp);
contents
dụ mà tôi cung cấp có chiều rộng tối đa của nó, tuy nhiên tôi muốn chiều rộng của nó là không có hơn JScrollPane
rộng di chuyển rất ngang sẽ không xảy ra. Tôi đang làm gì sai?
Tôi không hiểu câu hỏi. Điều gì sẽ xảy ra với nội dung của 'JScrollPane' khi nó rộng hơn kích thước thực của' JScrollPane'. Đơn giản chỉ cần cắt? Trong trường hợp đó bạn có thể xem xét việc làm cho thanh cuộn vô hình ('JScrollPane # getHorizontalScrollBar # setVisible (false)'); – Robin
@Robin, Không bị cắt. Thu hẹp chiều rộng xem thành chiều rộng khung cuộn. Chỉ cần tưởng tượng bảng điều khiển với bố trí biên giới và nội dung được đặt vào trung tâm. Nhưng trong trường hợp này chỉ có chiều rộng nội dung bị hạn chế với chiều rộng và chiều cao của nội dung của bảng điều khiển có thể tăng theo nhu cầu (với thanh cuộn thêm). –
Tôi không nghĩ rằng đó là trách nhiệm của 'JViewPort' để đặt hạn chế trên nó xem như chiều rộng nó có thể đạt được, điều này là nhiều hơn về chính nó. Hãy xem giao diện ['Scrollabe'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/Scrollable.html), đặc biệt [' Scrollable # getScrollableTracksViewportWidth'] (http : //docs.oracle.com/javase/7/docs/api/javax/swing/Scrollable.html#getScrollableTracksViewportWidth%28%29) – MadProgrammer