关于 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;
}上面的这些方法,加了自己的一些理解,不知道正确与否,请高人指点下,再详细的补充下,谢谢!或者对于 我这样的实现,有什么其他的办法!
// 返回视口的大小,告诉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;
}上面的这些方法,加了自己的一些理解,不知道正确与否,请高人指点下,再详细的补充下,谢谢!或者对于 我这样的实现,有什么其他的办法!
解决方案 »
- 最近作的一个小工具,期待各位高手指点赐教
- eclipse中有没有自动排列,对齐格式的设置啊?
- 关于 dispose() 和 setVisbale(false) 的区别
- 苦求JAVA高手..帮我解决难题
- java.net.URL类如何发送表单数据并反馈验证结果
- 高分咨询,看书说java非0长度的数组都是可变的,不能理解,难道不是在堆里一次分配好固定大小的吗?
- 誰知道JAVA做一个程序怎么发布呢!!
- 初级问题!提示java.lang.noclassdeffounderror如何解决?高分回报!在线
- 熟悉visibroker的大侠看过来呀
- 用VAJ的兄弟,我新撞VAJ,帮助文件找不到??
- JTextField数组添加事件的问题
- 空指针
滚动面板的使用应该没什么问题的。
楼主所说的Canvas 放到 JScrollPane里面,直接使用边框布局,不用设置canvas的大小 ,设置滚动面板的大小就可以了
这样就不会出现canvas超出JScrollPane的问题。
Canvas 放到 JScrollPane里面 ?? //怎么放?JScrollPane.add(component);?
JScrollPane.setViewportView(Canvas );??JScrollPane.setLayout(new BorderLayout()); //你确定可以么 ?!!!
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: layout of JScrollPane must be a ScrollPaneLayout