关于 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;
}上面的这些方法,加了自己的一些理解,不知道正确与否,请高人指点下,再详细的补充下,谢谢! 或者对于 我这样的实现,有什么其他的办法!
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;
}上面的这些方法,加了自己的一些理解,不知道正确与否,请高人指点下,再详细的补充下,谢谢! 或者对于 我这样的实现,有什么其他的办法!
以上这些类或接口实现了Scrollable这个接口至于你说的这些方法的具体作用 我觉得你可以看看API文档 解释的很详细
pane.add(其他组件);
你是指 JPanel ? JPanel 也是没有 实现Scrollable的,你改动一下大小,就知道效果了!