第13章+滚动.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第13章滚动

第13章 滚动   本章介绍Swing的滚动体系结构,这个体系结构包括两个轻量Swing容器、一个Scrollable接口、和一个JScrollBar类。其中,这两个轻量Swing容器是JViewport和JScrollPane,设计这个Scrollable接口来支持有特殊滚动需求的组件。   JViewport实例很少被实例化,也很少被直接使用,然而,本章仍将用相当大的篇幅来介绍JViewport类,因为它是Swing滚动体系结构的基础组件。   设计JScrollPane组件来替代AWT的重量组件ScrollPane。JScrollPane在AWT的ScrollPane基础上做了许多改进,包括具有配置行头部的能力和具有指定在滚动窗格角部组件的能力。   Scrollable接口是为表格、树、文本组件和列表等包含数据行或数据列的可滚动组件而设计的。   JScrollBar组件是一个用来实现手动滚动的滚动条。虽然Swing的JScrollPane组件在大多数滚动情况是足够用了,但是,有时为了性能或资源的考,还必须实现手动滚动。在这种情况下,可以用JScrollBar组件来滚动容器的内容。 13.1 JViewport   JViewport类是Swing滚动体系结构的基础。就如它的名字所指出的那样,JViewport的实例提供一个视口,视图的特定区域可以显示在这个视口中。可以操纵由视口显示的视图的位置,以便在不同的时刻,使不同的视图区域出现在这个视口中。   图13-1所示的小应用程序包含JViewport的一个实例,它的视图是JLabel的一个实例。该标签配备了一幅比显示图像的视口还要大的图像。这个小应用程序提供了四个用于调整视口中视图位置的按钮。   图13-1中的左图显示这个小应用程序开始时的样子。右图显示出在反复激活up和left按钮后,这个小应用程序的梯子。应该强调的是,反复激活按钮不是滚动视口中视图最理想的方式,但是它说明了一个视口是怎样调整其视图位置的。   这个小应用程序创建JViewport的一个实例和JLabel的一个实例。通过调用JVieweport.setView()来指定这个标签作为视口的视图。这个小应用程序还创建了一个ControlPanel实例(它是JPanel的一个扩展),这个实例包含了四个用于滚动标签的按钮。 例13-1 用JViewport的一个实例来滚动一幅图像 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Test extends JApplet { public Test() { Container contentPane = getContentPane(); JViewport viewport = new JViewport(); JPanel view = new JPanel(); view.add(new JLabel( new ImageIcon(anjinAndMariko.gif))); viewport.setView(view); contentPane.add(new ControlPanel(viewport), BorderLayout.NORTH); contentPane.add(viewport, BorderLayout.CENTER); } } class ControlPanel extends JPanel { private JViewport viewport; private JButton[] buttons = { new JButton(up), new JButton(down), new JButton(left), new JButton(right) }; public ControlPanel(JViewport vp) { viewport = vp; for(int i=0; i buttons.length; ++i) { add(buttons[i]); buttons[i].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { scroll(e.getActionCommand()); } }); } } private void scroll(String actionCmd) { Point vp = viewport.getViewPosition(); if(actionCmd.equals(up)) vp.y += 5; else if(actionCmd.eq

文档评论(0)

qwd513620855 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档