8.4.2 | JScrollPane |
Ein JScrollPane dient dazu, Komponenten anzuzeigen, deren Ausmaße zu groß für die Oberfläche sind. In diesem Fall werden horizontale und vertikale JScrollbars angezeigt.
Ein JScrollPane besteht dabei aus dem aktiven Bereich JViewport, den zwei Rollbalken und der Ecke zwischen ihnen.
Die Richtlinien, wann die einzelnen Rollbalken angezeigt werden sollen, können über die Methoden setVerticalScrollBarPolicy(int policy) bzw. setHorizontalScrollBarPolicy(int) eingestellt werden. Zu diesem Zweck dienen die folgenden Konstanten:
HORIZONTAL_SCROLLBAR_AS_NEEDED bzw.
VERTICAL_SCROLLBAR_AS_NEEDEDDie Standardeinstellung bewirkt, dass die JScrollBars nur dann angezeigt werden, wenn die Komponente größer als der sichtbare Bereich ist. Ist dies nicht der Fall, verschwinden die Scrollbars. HORIZONTAL_SCROLLBAR_ALWAYS bzw.
VERTICAL_SCROLLBAR_ALWAYSMit dieser Option werden die Rollbalken immer angezeigt. HORIZONTAL_SCROLLBAR_NEVER bzw.
VERTICAL_SCROLLBAR_NEVERHier werden die Rollbalken nie angezeigt.
Um eine Komponente in einem JScrollPane zu integrieren, kann man eine der drei Alternativen benutzen, die das Gleiche bewirken:JScrollPane scrollPane = new JScrollPane(new JTextArea());oderJScrollPane scrollPane = new JScrollPane(); scrollPane.setViewPortView(new JTextArea());oderJScrollPane scrollPane = new JScrollPane(); scrollPane.getViewport().setView(new JTextArea());Über den JViewport kann dabei auch der sichtbare Bereich durch das Programm gesetzt werden. So kann man einen Bereich definieren, der innerhalb des angezeigten Bereiches sichtbar gemacht werden soll. Alternativ können die Koordinaten des linken oberen Eckpunktes des sichtbaren Bereiches angegeben werden.scrollRectToVisible(Rectangle r) setViewPosition(Point p)Die erste Methode ist dabei auch in JComponent definiert, die natürlich nur wirksam ist, wenn die Komponente in einem JScrollPane eingebettet ist.
Material zum Beispiel
Das JScrollPane lässt sich optional noch mit einer zusätzlichen horizontalen und vertikalen Leiste versetzen. Dazu muss die entsprechende Komponente mittels
- Applet starten
- Quelltexte:
setColumnHeaderView(JComponent comp) setRowHeaderView(JComponent comp)gesetzt werden. Wenn sich der sichtbare Bereich innerhalb des JScrollPane verändert, so werden auch die Leisten synchronisiert (also passend verschoben).
Die vier Ecken des JScrollPane lassen sich ebenfalls setzen. Die MethodesetCorner(String cornerIdentifier, Component comp)erwartet neben der Eckkomponente eine der vier Konstanten für die möglichen Ecken, definiert in der Klasse JScrollPane:
- JScrollPane.LOWER_LEFT_CORNER
- JScrollPane.LOWER_RIGHT_CORNER
- JScrollPane.UPPER_LEFT_CORNER
- JScrollPane.UPPER_RIGHT_CORNER
JScrollPane scrollPane = new JScrollPane( new JLabel( new ImageIcon ("cow.jpg"))); getContentPane().add(scrollPane);