如何使用 JScrollPane 的示例

JScrollPane 是一个容器,当显示的组件超过 JFrame.

在 java 中创建滚动 bar 的代码 很简单。最流行的用法是 JTextArea,通过向 .

import javax.swing.JFrame;
import javax.swing.JScrollPane;
导入 javax.swing.JTextArea;

public class JScrollPaneTest {

//20 行、50 列文本框
JTextArea jta = new JTextArea(20, 50);

public JScrollPaneTest(){
JFrame f = new JFrame(JScrollPaneExample”);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.setVisible(true);

JScrollPane jsp = new JScrollPane(jta);
f.add(jsp, BorderLayout.CENTER);
f.pack();
}

public static void main(String[] args) {
new JScrollPaneTest();
}
}
Output
将

如果文本超过窗口的尺寸,滚动条将创建水平条和垂直条。

JScrollBar 和 JViewPort

A JScrollPane 将这两个类组合在一起JScrollBar et JViewPort et 使用后者的实例来管理对用户可见的部分。它负责基于垂直和水平电梯的尺寸和定位.

这是检索两个滚动条(水平和垂直)的代码:

JScrollBar vjsp = jsp.getVerticalScrollBar();
JScrollBar hjsp = jsp.getHorizontalScrollBar();
使用 getViewport()在此示例中,我们将 将图像添加到 JScrollPane 并使用 setViewPosition(Point p).

import java.awt.Point;
import javax.swing.ImageIcon;
导入 javax.swing.JFrame;
导入 javax.swing.JLabel;
导入 javax.swing.JList;
import javax.swing.JScrollPane;
导入 javax.swing.JTextArea;
import javax.swing.JViewport;

public class JScrollPaneTest {

public JScrollPaneTest(){

JFrame f = new JFrame(JScrollPaneExample”);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.setVisible(true);
f.setSize(300,300);

ImageIcon image = new ImageIcon(Fleur.jpg”);
JLabel pimage = new JLabel();
pimage.setIcon(image);

JScrollPane jsp = new JScrollPane(pimage);
JViewport jvp = new JViewport();
jvp = jsp.getViewport();
jvp.setViewPosition(新点 (30,200));
f.add(jsp);
}

public static void main(String[] args) {
new JScrollPaneTest();
}
}
Output

将图像添加到

更改设置

例如,如果窗口很宽,则两个条形会消失,因为我们不需要它。如果降低窗口的高度,它们将重新出现。这由每个条形图的滚动面板策略控制。

JScrollPane 有两个构造函数,可让您在创建时更改设置:
  • JScrollPane(组件 c, int vertical, int horizontal)
  • JScrollPane(int vertical, int 水平)
创建后也可以使用两种方法更改两条的显示策略: setHorizontalScrollBarPolicy(), setVerticalScrollBarPolicy().

VERTICAL_SCROLLBAR_AS_NEEDED HORIZONTAL_SCROLLBAR_AS_NEEDED 默认情况下,滚动条会根据需要出现和消失。
VERTICAL_SCROLLBAR_ALWAYS HORIZONTAL_SCROLLBAR_ALWAYS 始终显示滚动条。
VERTICAL_SCROLLBAR_NEVER HORIZONTAL_SCROLLBAR_NEVER 滚动条将始终处于隐藏状态。

以下语句被添加到第一个 JTextArea 示例的代码中,紧跟在 JScrollPane:

jsp.setVerticalScrollBarPolicy(jsp.VERTICAL_SCROLLBAR_ALWAYS);
Output:

jscrollpane

References:
Oracle 文档:JScrollPane
Oracle 文档:JViewPort
http://www2.htw-dresden.de/~beck/JAVA11/SWING/scrolling.html