JScrollpane необходимо уменьшить его ширину
у меня есть JScrollpane
что есть JPanel
внутри (и панель содержит несколько JLabel
s).
Я хочу изменить размер панели прокрутки, чтобы фактически изменить ее размер (возможно, ниже предпочтительного размера внутренних компонентов), а не только размер окна просмотра.
цель состоит в том, чтобы внутренняя панель изящно исчезла (используя конкретные приоритеты сокращения и тому подобное в my miglayout), когда пользователь сжимает scrollpane слишком мало.
1 ответов
вероятно, лучший метод заключается в том, чтобы содержащийся компонент всегда был одинаковой ширины с окном просмотра. Для этого используется первый компонент (тот, который является дочерним для JViewPort
, прошел в JScrollPane
конструктор или установить как viewportView
) необходимо реализовать javax.swing.Scrollable
. Ключевым методом является getScrollableTracksViewportWidth
, который должен вернуть true
.
вот быстрый и грязный прокручиваемый JPanel:
public class ScrollablePanel extends JPanel implements Scrollable {
public Dimension getPreferredScrollableViewportSize() {
return getPreferredSize();
}
public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) {
return 10;
}
public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) {
return ((orientation == SwingConstants.VERTICAL) ? visibleRect.height : visibleRect.width) - 10;
}
public boolean getScrollableTracksViewportWidth() {
return true;
}
public boolean getScrollableTracksViewportHeight() {
return false;
}
}