~Java4Beginners~
~Java4Beginners~

JScrollPane

Mann kennt es aus vielen Anwendungen, dass die Fenstergröße nicht ausreicht, um ein Objekt (Bilder oder Texte) komplett zu sehen. Daher ist eigentlich jedem Nutzer die Vertikale oder Horizontale Scrollbar bereits bekannt.

Auch Java bietet uns einen Container an, um mit einer Scrollbar zu arbeiten. Das schöne an dieser Klasse ist, dass wir uns nicht so viele Konstanten anschauen müssen, sondern lediglich die Konstanten, die das Verhalten der Scrollbar, bzw. deren sichtbarkeit angeben. Die Scrollbar kann entweder nie oder immer angezeigt werden. Eine weitere Option ist die Anzeige der Scrollbar erst, wenn sie benötigt wird. Diese Konstanten werden, bzw. können dem Konstruktor übergeben werden.

Konstruktoren

Folgende Komponenten können dem Konstruktor übergeben werden.
  • view - Name der Komponente, die in der JScrollPane angezeigt werden soll.
  • vsbPolicy - Verhalten vertikale Scrollbar.
  • hsbPolicy - Verhalten horizontale Scrollbar.
Konstruktor Beschreibung
JScrollPane() Es wird keine Komponente übergeben und die vertikale und horizontale Scrollbar wird nur bei Bedarf eingeblendet.
JScrollPane(view) Diesem Konstruktor wird die anzuzeigende Komponente übergeben.
JScrollPane(view, vsbPolicy, hsbPolicy) Dieser Konstruktor erhält neben der Komponente das Verhalten der vertikalen und der horizontalen Scrollbar.
JScrollPane(vsbPolicy, hsbPolicy) Dieser Konstruktor erzeugt das JScrollPane-Objekt nur mit der Angabe der vertikalen und horizontalen Scrollbar.
Es wird immer erst die vertikale Scrollbar und dann die horizontale Scrollbar angegeben.

vsb- und hsbPolicy

Folgende Konstanten sind für die Angabe des Verhaltens der Scrollbar.
Konstante Beschreibung
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED Die vertikale Scrollbar wird nur bei Bedarf eingeblendet.
ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS Die vertikale Scrollbar ist immer eingeblendet.
ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER Die vertikale Scrollbar wird nie eingeblendet.
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED Die horizontale Scrollbar wird nur bei Bedarf eingeblendet.
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS Die horizontale Scrollbar ist immer eingeblendet.
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER Die horizontale Scrollbar wird nie eingeblendet.
Die Klasse ScrollPaneConstants braucht nicht importiert werden, da es sich um eine Interface-Klasse handelt, welche an JScrollPane vererbt wurde.

Beispielprogramm

In folgendem Beispielprogramm wird dem JScrollPane ein JPanel zugewiesen, welches mit einem JLabel mit langem Text versehen ist. JLabel wird in dem Bereich Bedienelemente erläutert.

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;

/**
 * Beispiel Container-Klasse JScrollPane
 * @author Markus Badzura
 */
public class ContainerJScroll extends JFrame
{
    public void ContainerJScroll()
    {
        setTitle("Beispiel Container-Klasse JScrollPane");
        setSize(300,300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocation(200,200);
        JPanel panel = new JPanel();
        panel.setSize(400,400);
        panel.add(new JLabel("Das ist ein Label mit einer großen Anzahl von Zeichen"
                + ". Die Scrollbar erscheint in diesem Beispiel erste, wenn der Text "
                + "länger ist, als die zur Verfügung gestellt Fläche."));
        JScrollPane scroll = new JScrollPane(panel,
                ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
                ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        add(scroll);
        setVisible(true);
    }
    public static void main(String[] args) 
    {
        ContainerJScroll s = new ContainerJScroll();
        s.ContainerJScroll();
    }
}
Wenn das Programm ausgeführt wird, erhalten wir folgende Fensteransicht.

Wie zu erkennen ist, befindet sich unten nun eine Scrollbar. Durch die Eigenschaft VERTICAL_SCROLLBAR_AS_NEEDED wird diese, wenn wir das Fenster nach rechts hin vergrößern, so dass der komplette Text sichtbar ist, automatisch ausgeblendet.

JTextArea in JScrollPane setzen

Eine weitere Verwendungsmöglichkeit besteht darin, dass wir einer JTextArea "Scrollbalken" verpassen. Hierfür erstellen wir ein JTextArea und fügen dem JScrollPane einen Viewport auf die JTextArea hinzu.

  private JScrollPane jsp_right;
  private JTextArea jta_right;
  [. . . . .]
      jta_right = new JTextArea();
    jta_right.setEditable(false);
    jsp_right = new JScrollPane();
    jsp_right.setBounds((this.getWidth()/2)-20,0,this.getWidth()/2,
            this.getHeight());
    jsp_right.setViewportView(jta_right);
nach oben Java4Beginners -- Seitenversion 1.01 -- Stand: 2017-06-23