滚动区域的例子

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

程序代码:

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

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();

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航