Пример использования JScrollPane

JScrollPane — это контейнер, который предоставляет возможность создавать горизонтальную или вертикальную прокрутку или и то, и другое одновременно, когда отображаемый компонент превышает размер JFrame.

Код для создания скролла bar в java  очень просто. Наиболее популярным использованием является JTextArea путем добавления панели прокрутки в .

import javax.swing.JFrame; 
import javax.swing.JScrollPane;
import 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
Добавить JScrollPane в Jtextarea

Полоса прокрутки создает как горизонтальные, так и вертикальные полосы, если текст превышает размер окна.

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;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JScrollPane;
import 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(изображение);

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

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

добавить изображение в jscrollpane jviewport

Изменить настройки

Например, если окно широкое, две полосы исчезают, потому что они нам не нужны. Если вы уменьшите высоту окна, они появятся снова. Это контролируется политикой панели прокрутки для каждого bar.

JScrollPane имеет два конструктора, которые дают вам возможность изменять настройки во время создания:
  • JScrollPane(Component c, int vertical, int horizontal)
  • JScrollPane(int vertical, int  horizonal)
Вы также можете изменить политику отображения двух стержней после создания с помощью двух методов:  setHorizontalScrollBarPolicy()setVerticalScrollBarPolicy().

VERTICAL_SCROLLBAR_AS_NEEDED HORIZONTAL_SCROLLBAR_AS_NEEDED По умолчанию полосы прокрутки появляются и исчезают по мере необходимости.
VERTICAL_SCROLLBAR_ALWAYS HORIZONTAL_SCROLLBAR_ALWAYS Всегда показывать полосы прокрутки.
VERTICAL_SCROLLBAR_NEVER HORIZONTAL_SCROLLBAR_NEVER scrollbars всегда будут скрыты.

Следующий оператор добавляется в код первого примера JTextArea сразу после JScrollPane:

jsp.setVerticalScrollBarPolicy(jsp. VERTICAL_SCROLLBAR_ALWAYS); 
Output:

jscrollpane policy всегда отображать полосы прокрутки

References:
Документация Oracle: JScrollPane
Документация Oracle: JViewPort
http://www2.htw-dresden.de/~beck/JAVA11/SWING/scrolling.html