Прокручиваемая панель JDesktopPane?

Я хотел бы добавить возможность прокрутки в javax.swing.JDesktopPane. Но упаковка в javax.swing.JScrollPane не дает желаемого поведения.

Поиск в сети показывает, что это было проблемой в течение некоторого времени. Есть немногорешения, но они кажутся довольно старыми, и я не полностью ими доволен.

Какие решения активно поддерживается вы знаете?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
12
0
4 404
3

Ответы 3

Я использовал Решение JavaWorld, создав свой собственный JScrollableDesktopPane.

На самом деле это мое текущее решение, но оно меня не в восторге. Я решил спросить здесь, прежде чем приступить к собственному проекту, чтобы создать тот, который мне нравится.

Greg Mattes 29.09.2008 17:59

Я нашел это: http://www.javaworld.com/javaworld/jw-11-2001/jw-1130-jscroll.html?page=1

Это хороший учебник с множеством объяснений и информации по Swing & so, который позволяет создать JscrollableDesktopPane с большим количеством вещей.

Вам нужно будет немного изменить некоторые части кода, чтобы они соответствовали вашим требованиям.

Наслаждаться !

Упс, забыл прямую ссылку на источник: javaworld.com/javaworld/jw-11-2001/jscroll/jw-1130-jscroll.j ar

Benj 13.10.2012 18:12

JScrollableDesktopPane от Javaworld больше не доступен на их веб-сайте. Мне удалось раздобыть несколько его копий, но ни одна из них не работает.

Я нашел простое решение, которое можно получить, выполнив следующее. Это не самое красивое, но определенно работает лучше, чем поведение по умолчанию.

public class Window extends Frame {
    JScrollPane scrollContainer = new JScrollPane();
    JDesktopPane mainWorkingPane = new JDesktopPane();

    public Window() {
        scrollContainer.setViewportView(mainWorkingPane);

        addComponentListener(new ComponentAdapter() {
            public void componentResized(ComponentEvent evt) {
                revalidateDesktopPane();
            }
        });
    }

    private void revalidateDesktopPane() {
        Dimension dim = new Dimension(0,0);
        Component[] com = mainWorkingPane.getComponents();
        for (int i=0 ; i<com.length ; i++) {
            int w = (int) dim.getWidth()+com[i].getWidth();
            int h = (int) dim.getHeight()+com[i].getHeight();
            dim.setSize(new Dimension(w,h));
        }
        mainWorkingPane.setPreferredSize(dim);
        mainWorkingPane.revalidate();
        revalidate();
        repaint();  
    }
}

Идея состоит в том, чтобы обернуть JDesktopPane в JScrollPane, добавить слушателя изменения размера в основной фрейм и затем оценить содержимое JDesktopPane при изменении размера (или добавлении новых элементов).

Надеюсь, это поможет кому-то там.

Другие вопросы по теме