当前位置: 首页 > 教程 > Java Swing >

Java JViewport

精华
小牛编辑
138浏览
2023-03-14

1 Java JViewport的介绍

JViewport类用于实现滚动。JViewport旨在支持逻辑滚动和基于像素的滚动。通过调用JViewport.setViewPosition() 方法来滚动视口的子级(称为视图)。

2 Java JViewport的内部类

方法 描述
protected class JViewport.AccessibleJViewport 此类为Jviewport类实现可访问性支持。
protected class JViewport.ViewListener 视图的侦听器。

3 Java JViewport的字段

方法 描述
static int BACKINGSTORE_SCROLL_MODE 将视口内容绘制到屏幕外图像中。
protected Image backingStoreImage 用于后备存储的视图图像。
static int BLIT_SCROLL_MODE 使用graphics.copyArea实现滚动。
protected boolean isViewSizeSet 确定视口尺寸后为true。
protected Point lastPaintPosition 我们绘制的最后一个viewPosition,因此我们知道多少后备商店图像有效。
protected boolean scrollUnderway scrollUnderway标志用于JList之类的组件。
static int SIMPLE_SCROLL_MODE 此模式使用非常简单的方法,即在每次滚动时重新绘制滚动窗格的全部内容。

4 Java JViewport的构造方法

方法 描述
JViewport() 创建一个JViewport。

5 Java JViewport的方法

方法 描述
void addChangeListener(ChangeListener l) 将更改侦听器添加到列表,每当视图的大小,位置或视口的范围大小发​​生更改时都会通知该侦听器。
protected LayoutManager createLayoutManager() 子类可以重写此方法,以在构造函数中安装其他布局管理器(或null)。
protected Jviewport.ViewListener createViewListener() 为视图创建一个侦听器。
int getScrollMode() 返回当前的滚动模式。
Component getView() 返回JViewport的一个孩子或null。
Point getViewPosition() 返回出现在视口左上角的视图坐标,如果没有视图,则返回0,0。
Dimension getViewSize() 如果尚未显式设置视图的大小,则返回首选大小,否则返回视图的当前大小。
void setExtentSize(Dimension newExtent) 使用视图坐标设置视图可见部分的大小。
void setScrollMode(int mode) 用于控制滚动视口内容的方法。
void setViewSize(Dimension newSize) 设置视图的大小。

6 Java JViewport的案例

package cn.xnip;

/**
 * 小牛知识库网: https://www.xnip.cn
 */

import java.awt.BorderLayout;
import java.awt.Color;  
import java.awt.Dimension;  
import javax.swing.JButton;  
import javax.swing.JFrame;  
import javax.swing.JLabel;  
import javax.swing.JScrollPane;  
import javax.swing.border.LineBorder;  
public class ViewPortClass2 {  
    public static void main(String[] args) {  
        JFrame frame = new JFrame("JViewport案例-小牛知识库网");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  
        JLabel label = new JLabel("Label");  
        label.setPreferredSize(new Dimension(1000, 1000));  
        JScrollPane jScrollPane = new JScrollPane(label);  
  
        JButton jButton1 = new JButton();  
        jScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);  
        jScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);  
        jScrollPane.setViewportBorder(new LineBorder(Color.RED));  
        jScrollPane.getViewport().add(jButton1, null);  
  
        frame.add(jScrollPane, BorderLayout.CENTER);  
        frame.setSize(400, 150);  
        frame.setVisible(true);  
    }  
}  

输出结果为: