- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
最近下载
- 医学影像学模拟考试题与答案.docx
- 2021OceanStor Dorado 6000, Dorado 18000系列产品白皮书.docx VIP
- 华为OceanStor18000系列案例集.pptx VIP
- 医学影像学试题(附参考答案).docx
- oceanstor 18000系列高端存储系统可靠性技术白皮书.pdf VIP
- 部编人教版五年级上册语文全册表格教案(新审定).pdf VIP
- 2024年新生儿窒息复苏(新版指南).pptx VIP
- 华为OceanStor18000系列高端存储.PDF VIP
- oceanstor18000系列存储系统产品介绍.pptx VIP
- 华为OceanStor 融合存储最佳实践.pdf VIP
文档评论(0)