ビューポートにコンポーネントを配置する
スクロールペイン内のビューポートにコンポーネントを配置するには、コンストラクタでコンポーネントを指定することでも可能ですがスクロールペインを作成した後でメソッドを使って配置する事も可能です。
JScrollPaneクラスで用意されている「setViewportView」メソッドを使います。
public void setViewportView(Component view)
必要に応じてビューポートを作成してから、ビューを設定します。直接 JScrollPane のコンストラクタにビューを提供しないアプリケーションは、こ のメソッドを使用して、次のようにして、スクロール区画に表示されるスクロー ル可能な子を指定する必要があります。次に例を示します。 JScrollPane scrollpane = new JScrollPane(); scrollpane.setViewportView(myBigComponentToScroll); アプリケーションは直接スクロール区画に子を追加すべきできありません。 パラメータ: view - ビューポートに追加するコンポーネント
引数にスクロールペインの中のビューポートに配置したいコンポーネントを指定します。
実際の使い方は次のようになります。
JTextArea textarea = new JTextArea(); JScrollPane scrollpane = new JScrollPane(); scrollpane.setViewportView(textarea);
サンプルプログラム
では簡単なサンプルを作成して試してみます。
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); } }
上記をコンパイルした後で実行すると次のように表示されます。
スクロールバーが表示されていませんが、明示的に設定をしていない場合はスクロールバーは必要になった時にだけ表示されます。今回はテキストエリアをスクロールペインの中に配置していますがテキストエリアに入力されている文字列が少なくスクロールする必要な無いためにスクロールバーは表示されていません。
ではテキストエリアに文字を追加していきます。
このようにテキストエリアに入力された文字が増えてスクロールしなければ表示しきれなくなると自動的にスクロールバーが表示されます。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。