モジュール java.desktop
パッケージ javax.swing

クラスJScrollPane

java.lang.Object
すべての実装されたインタフェース:
ImageObserver, MenuContainer, Serializable, Accessible, ScrollPaneConstants

@JavaBean(defaultProperty="UI", description="A specialized container that manages a viewport, optional scrollbars and headers") public class JScrollPane extends JComponent implements ScrollPaneConstants, Accessible
軽量コンポーネントのスクロール可能なビューを提供します。 JScrollPaneは、ビュー・ポート、オプションの垂直スクロール・バーと水平スクロール・バー、およびオプションの行ヘッダー・ビューポートと列ヘッダー・ビューポートを管理します。 詳細は、『The Java Tutorial』の「How to Use Scroll Panes」にあるJScrollPaneのタスク指向のドキュメントを参照してください。 JScrollPaneは、重量コンポーネントをサポートしていません。

例:

次の文は、この図について説明しています。

JViewportは、たとえば、テキスト・ファイルなど、データ・ソースへのウィンドウまたは「ビュー・ポート」を提供します。 データ・ソースはJViewportのビューによって表示される「スクロール可能なクライアント」(データ・モデル)です。 JScrollPaneは、右の図に示すように、基本的にJScrollBarJViewport、およびそれらの接続から構成されます。

スクロール・バーとビュー・ポートのほかに、JScrollPaneには列ヘッダーと行ヘッダーがある場合もあります。 これらはそれぞれsetRowHeaderViewsetColumnHeaderViewを使用して指定するJViewportオブジェクトです。 列ヘッダー・ビューポートは自動的に左右にスクロールして、メイン・ビューポートの左右へのスクロールを追跡します。 垂直にはスクロールしません。 行ヘッダーも同じように動作します。

2つのスクロール・バーが接するところ、行ヘッダーが列ヘッダーに接するところ、またはスクロール・バーが一方のヘッダーに接するところで、両方のコンポーネントは隅に達する前に停止し、矩形のスペース(デフォルトでは空のスペース)が残ります。 これらのスペースは、四隅のどのコーナーにも存在できます。 前の図では、四隅の右上にスペースが存在し、「コーナー・コンポーネント」というラベルが付けられています。

setCornerメソッドを使ってコーナーにコンポーネントを追加することにより、これらの空のスペースをいくつでも置き換えることができます。 (ノート: 同じコンポーネントを複数のコーナーに追加することはできません。) この機能は、スクロール・ペインに装飾や機能を追加する場合に役立ちます。 各コーナー・コンポーネントのサイズは、ヘッダーおよびその周りのスクロール・バーのサイズ、またはそのどちらかのサイズによって決まります。

コーナー・コンポーネントは、それが存在するための空のスペースがその隅にある場合にのみ、可視になります。 たとえば、列ヘッダーを持つスクロール・ペインの右上隅にコンポーネントが設定されている場合について考えてみましょう。 ビュー・コンポーネントがスクロールバーを必要とするほど大きくないなどの理由で、スクロール・ペインに垂直スクロールバーが存在しない場合は、(コーナーのヘッダーと垂直スクロールバーが接するところに空のスペースができないため)コーナー・コンポーネントは表示されません。 setVerticalScrollBarPolicy(VERTICAL_SCROLLBAR_ALWAYS)を使用して、スクロールバーを常に強制的に表示する設定にすると、コーナー・コンポーネント用のスペースを常に確保できます。

メイン・ビューポートの周りにボーダーを追加するには、setViewportBorderを使用できます。 もちろん、setBorderを使用してスクロール・ペイン全体にボーダーを追加することもできます。

メインのビューポートのビューがそのビューポートよりも小さいか、または不透明な場合に行う必要がある共通の操作は、使用されるバックグラウンド・カラーの設定です。 この操作を行うには、scrollPane.getViewport().setBackground()を使用してビューポートのバックグラウンド・カラーを設定します。 ビューポートの色を設定し、スクロール・ペインの色を設定しないのは、デフォルトでJViewportが不透明であるためです。特に、不透明の場合は、そのバックグラウンドをバックグラウンド・カラーを使用して完全に塗りつぶすことになります。 したがって、JScrollPaneがそのバックグラウンドを描画するとき、ビューポートは通常、そのバックグラウンドの上から描画します。

デフォルトで、JScrollPaneScrollPaneLayoutを使用してその子Componentsのレイアウトを処理します。 ScrollPaneLayoutは、次のいずれかの方法でビュー・ポートのビューを作成するサイズを決定します。

  1. ビューがScrollableを実装する場合は、getPreferredScrollableViewportSizegetScrollableTracksViewportWidth、およびgetScrollableTracksViewportHeightの組み合わせが使用される
  2. そうでない場合は、getPreferredSizeが使用される。

警告: Swingはスレッドに対して安全ではありません。 詳細は、「Swing's Threading Policy」を参照してください。

警告: このクラスの直列化されたオブジェクトは、今後のSwingリリースと互換ではなくなる予定です。 現在の直列化のサポートは、短期間の格納や、同じバージョンのSwingを実行するアプリケーション間のRMIに適しています。 1.4では、すべてのJavaBeansの長期ストレージのサポートがjava.beansパッケージに追加されました。 XMLEncoderを参照してください。

導入されたバージョン:
1.2
関連項目: