Прокручиваемый JDesktopPane? - PullRequest
       9

Прокручиваемый JDesktopPane?

12 голосов
/ 29 сентября 2008

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

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

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

Ответы [ 3 ]

6 голосов
/ 29 сентября 2008

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

1 голос
/ 16 июня 2015

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

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

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 при изменении размера (или добавлении новых элементов).

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

1 голос
/ 13 октября 2012

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

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

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

Наслаждайтесь!

...