服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

滚动区域的例子


  程序代码:
  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();
  }
  }

扫描关注微信公众号