отключите горизонтальную прокрутку в jscrollpane

Книжные Глюки C++ могут оказаться полезными.

15
задан Oli 12 March 2015 в 17:32
поделиться

3 ответа

Наконец-то я узнал, как, пожалуйста, посмотрите этот очень короткий пример, никаких сложных приемов не требуется:

public class MyTest extends JFrame {

    public static void main(String[] args) {
        MyTest test = new MyTest();
        test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        test.setSize(300, 200);
        test.setVisible(true);
    }

    public MyTest() {
        String[] data = {
            "Arlo", "Cosmo", "Elmo", "Hugo",
            "Jethro", "Laszlo", "Milo", "Nemo",
            "Otto", "Ringo", "Rocco", "Rollo"
        };
        JList list = new JList(data);
        list.setLayoutOrientation(JList.HORIZONTAL_WRAP);
        list.setVisibleRowCount(0);
        JScrollPane scroll = new JScrollPane(list);
        this.add(scroll);
    }
}

Адаптировано из учебника Sun

7
ответ дан 1 December 2019 в 02:02
поделиться

Это не стандартное решение в JDK. .

Вы можете использовать WrapLayout .

Или вы можете создать настраиваемую панель и реализовать прокручиваемый интерфейс. Ключевым моментом в этом случае является переопределение getScrollableTracksViewportWidth () для возврата true, поэтому для целей макета используется ширина области просмотра, а не ширина панели. Пример такого подхода можно найти в ScrollableFlowPanel

7
ответ дан 1 December 2019 в 02:02
поделиться

Вы можете использовать:

import static javax.swing.ScrollPaneConstants.*;
// ...
JScrollPane.setHorizontalScrollBarPolicy(HORIZONTAL_SCROLLBAR_NEVER);

... но это просто предотвращает отображение горизонтальной полосы прокрутки.

Автоматическая перегруппировка содержимого будет зависеть от содержимого. JTextPane или JEditorPane сделает это за вас автоматически (без необходимости в приведенном выше коде).

22
ответ дан 1 December 2019 в 02:02
поделиться
Другие вопросы по тегам:

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