首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可滚动的JDesktopPane?

可滚动的JDesktopPane?
EN

Stack Overflow用户
提问于 2008-09-29 13:51:31
回答 3查看 4.6K关注 0票数 13

我想将滚动功能添加到javax.swing.JDesktopPane中。但是,在javax.swing.JScrollPane中包装并不会产生所需的行为。

搜索网页显示,这是一个相当长的时间以来一直是一个问题。外面有一些 解决方案,但他们似乎很老了,我对他们并不完全满意。

您知道主动维护的解决方案是什么?

EN

回答 3

Stack Overflow用户

发布于 2008-09-29 13:56:10

我通过创建我自己的JavaWorld的解决方案来使用JScrollableDesktopPane.

票数 7
EN

Stack Overflow用户

发布于 2015-06-16 16:22:50

Javaworld的JScrollableDesktopPane不再出现在他们的网站上。我设法找到了一些副本,但都没有用。

我导出的一个简单的解决方案可以实现如下所示。这并不是最漂亮的,但它肯定比默认的行为更有效。

代码语言:javascript
复制
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的内容。

希望这对外面的人有帮助。

票数 2
EN

Stack Overflow用户

发布于 2012-10-13 14:11:51

我发现了这个:http://www.javaworld.com/javaworld/jw-11-2001/jw-1130-jscroll.html?page=1

这是一个很好的教程,包含了大量关于Swing的解释和信息&因此,它允许创建一个包含大量内容的JscrollableDesktopPane。

您需要修改代码的一些部分来满足您的需求。

享受吧!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/148728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档