ビューポートにコンポーネントを配置する

広告

スクロールペイン内のビューポートにコンポーネントを配置するには、コンストラクタでコンポーネントを指定することでも可能ですがスクロールペインを作成した後でメソッドを使って配置する事も可能です。

JScrollPaneクラスで用意されている「setViewportView」メソッドを使います。

必要に応じてビューポートを作成してから、ビューを設定します。直接 
JScrollPane のコンストラクタにビューを提供しないアプリケーションは、こ
のメソッドを使用して、次のようにして、スクロール区画に表示されるスクロー
ル可能な子を指定する必要があります。次に例を示します。

  JScrollPane scrollpane = new JScrollPane();
  scrollpane.setViewportView(myBigComponentToScroll);
 
  アプリケーションは直接スクロール区画に子を追加すべきできありません。

パラメータ:
  view - ビューポートに追加するコンポーネント

引数にスクロールペインの中のビューポートに配置したいコンポーネントを指定します。

実際の使い方は次のようになります。

JTextArea textarea = new JTextArea();

JScrollPane scrollpane = new JScrollPane();
scrollpane.setViewportView(textarea);

サンプルプログラム

では簡単なサンプルを作成して試してみます。

JScrollPaneTest2.java

import javax.swing.*;
import java.awt.BorderLayout;

public class JScrollPaneTest2 extends JFrame{

  public static void main(String[] args){
    JScrollPaneTest2 frame = new JScrollPaneTest2();

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setBounds(10, 10, 300, 200);
    frame.setTitle("タイトル");
    frame.setVisible(true);
  }

  JScrollPaneTest2(){
    JTextArea textarea = new JTextArea("JTextAreaを配置");

    JScrollPane scrollpane = new JScrollPane();
    scrollpane.setViewportView(textarea);

    getContentPane().add(scrollpane, BorderLayout.CENTER);
  }
}

上記をコンパイルした後で実行すると次のように表示されます。

JScrollPaneでビューポートにコンポーネントを配置する

スクロールバーが表示されていませんが、明示的に設定をしていない場合はスクロールバーは必要になった時にだけ表示されます。今回はテキストエリアをスクロールペインの中に配置していますがテキストエリアに入力されている文字列が少なくスクロールする必要な無いためにスクロールバーは表示されていません。

ではテキストエリアに文字を追加していきます。

JScrollPaneでビューポートにコンポーネントを配置する

このようにテキストエリアに入力された文字が増えてスクロールしなければ表示しきれなくなると自動的にスクロールバーが表示されます。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。