JScrollPaneの使用例

JScrollPaneは、表示されるコンポーネントのサイズがJFrame.

java でスクロールbarを作成するコードbバーのサイズを超えた場合に、水平スクロールまたは垂直スクロール、あるいはその両方を同時に作成できるコンテナです。とても簡単です。最も一般的な用途は、.

import javax.swing.JFrameにスクロール・ペインを追加するJTextAreaです。
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は、2つのクラスを結合します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(image);

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に画像を追加

設定の変更

たとえば、ウィンドウが広い場合、2つのバーは不要になるため消えます。ウィンドウの高さを低くすると、再び表示されます。これは、各バーのスクロール・パネル・ポリシーによって制御されます。

JScrollPane には、作成時に設定を変更するための 2 つのコンストラクタがあります。
  • JScrollPane(コンポーネント c, int vertical, int horizontal)
  • JScrollPane(int vertical, int horizontal)
2つの方法で作成後に2つのバーの表示ポリシーを変更することもできます。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 policy always display scroll bars

References:
Oracle ドキュメント: JScrollPane
Oracle ドキュメント: JViewPort
http://www2.htw-dresden.de/~beck/JAVA11/SWING/scrolling.html