JScrollpane должен уменьшить свою ширину

У меня есть a JScrollpane это имеет a JPanel на внутренней части (и панель содержит некоторых JLabels).

Я хочу изменить размер области прокрутки для фактического изменения ее размера (возможно ниже предпочтительного размера внутренних компонентов), не только размера области просмотра.

Цель состоит в том, чтобы внутренняя панель корректно исчезла (использование определенных приоритетов уменьшения и т.п. в моем miglayout), когда пользователь уменьшает слишком маленькую область прокрутки.

11
задан Steven Sudit 26 April 2010 в 19:37
поделиться

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;
    }
}
14
ответ дан 3 December 2019 в 08:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: