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);
}
}
输出结果为: