程序代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class viewporttest extends jpanel implements actionlistener
{
private jviewport viewport; /* 视区类, 滚动区域是建立在可见视区滚动的基础上 */
private jpanel scrollpane; /* 滚动容器, 存放所有(包括当前不可见)构件 */
private jbutton left,right; /* 左右按钮, 完成左右滚动视区的功能 */
public viewporttest() {
viewport = new jviewport();
setlayout(new borderlayout());
left = new jbutton("<");
right = new jbutton(">");
left.addactionlistener(this);
right.addactionlistener(this); // 设置左右按钮的事件监听
scrollpane = new jpanel(new flowlayout());
for(int i=0; i<10; i++)
scrollpane.add(new jbutton("btn"+string.valueof(i) )); // 假设有10个按钮, 只能看到其中几个
viewport.add(scrollpane,null);
add(left,borderlayout.west);
add(right,borderlayout.east);
add(viewport, borderlayout.center);
}
public void actionperformed(actionevent e)
{
rectangle currect = viewport.getvisiblerect(); // 取得当前视区范围
if(e.getsource().equals(left))
currect.setlocation(currect.getlocation().x - 10, currect.getlocation().y); // 设置范围移动
if(e.getsource().equals(right))
currect.setlocation(currect.getlocation().x + 10, currect.getlocation().y);
viewport.scrollrecttovisible(currect); // 更新视区
}
/*- test code -*/
public static void main(string[] args)
{
jframe frame = new jframe();
frame.setsize(200,60);
frame.getcontentpane().setlayout(new borderlayout());
frame.getcontentpane().add(new viewporttest(),borderlayout.center);
frame.show();
}
}
闽公网安备 35060202000074号