关于 JScrollPane ,应该也运到了不少了, 主要用在把 JTable 等 空间放在它里面,可以有滑动条; 现在我有这样一个应运,是一个 自己扩展的 Canvas 组件,直接把它放在 JScrollPane 里面,当 Canvas 的大小 大于 JScrollPane 时,会遮盖住 JScrollPane ,没有在一个视口里显示; 然后试着发现,所有能放在 JScrollPane  里的对象好象都实现了 Scrollable 接口,然手我也 让我自己的 Canvas 实现 Scrollable 这个接口; 首先想请问下,我这样的思路是否正确,如果正确,Scrollable 里的方法具体能否详解一下,不甚感激! 
        public Dimension getPreferredScrollableViewportSize() {
            // 返回视口的大小,告诉JScrollPane  
            return this.getPreferredSize();
        }        public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) {
            //这个方法 不清楚
        }        public boolean getScrollableTracksViewportHeight() {
            //如果视口总是强制此 Scrollable 的高度与视口高度匹配,则返回 true。
                            //上面这个是 API 里的解释,不过不是很明白,如果强制匹配的话,是不是我再改变内部组件的高度,始终是 视口的高度?
            return false;
        }        public boolean getScrollableTracksViewportWidth() {
            // 如果视口总是强制此 Scrollable 的宽度与视口宽度匹配,则返回 true。
                            //跟上面的方法类似,这个是宽度而已
            return false;
        }
        public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) {
            //鼠标滑轮时,或者拉动滑块时, 每次位移的增量                if (orientation == SwingConstants.HORIZONTAL) {
                //水平方向
                    return 100;
                }
            return 10;
        }上面的这些方法,加了自己的一些理解,不知道正确与否,请高人指点下,再详细的补充下,谢谢! 或者对于 我这样的实现,有什么其他的办法!

解决方案 »

  1.   

    DefaultTreeCellEditor.DefaultTextField, JEditorPane, JFormattedTextField, JList, JPasswordField, JTable, JTextArea, JTextComponent, JTextField, JTextPane, JTree
    以上这些类或接口实现了Scrollable这个接口至于你说的这些方法的具体作用  我觉得你可以看看API文档   解释的很详细
      

  2.   

    直接定义滚动面板,往里面加东西就可以了啊
    pane.add(其他组件);
      

  3.   


    你是指 JPanel ? JPanel 也是没有 实现Scrollable的,你改动一下大小,就知道效果了!