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

クラスJViewport

  • すべての実装されたインタフェース:
    ImageObserver, MenuContainer, Serializable, Accessible

    public class JViewport
    extends JComponent
    implements Accessible
    ベースとなる情報を見るために使用する「ビュー・ポート(窓)」です。 スクロールするときに移動するのがビュー・ポートです。 これは、カメラのファインダを覗くことに似ています。 ファインダを上に向かって動かすと、新しいものが視野のいちばん上に入り、いちばん下にあったものが視野から消えます。

    デフォルトでは、JViewportは不透明です。 これを変更する場合は、setOpaqueメソッドを使用します。

    注:描画する際にバッファを必要としない高速スクロール・アルゴリズムを実装しました。 アルゴリズムの機能は次のとおりです。

    1. ビューと親ビューが、JComponentsでない場合は、ビューと親ビューがチェックされて、ビューポート全体が停止および再描画されます。
    2. ビュー・ポートがほかの上位クラスによって隠されている場合は、中止してビュー・ポート全体をペイントし直す。
    3. 表示可能になる領域を計算する。ビュー・ポートとサイズが同じ場合は、中止して領域全体をペイントし直す。
    4. 上位クラスのWindowグラフィックスを取得して、スクロールした領域のcopyAreaをペイントし直す。
    5. ビューに新しく表示された領域をペイントし直すようメッセージを送る。
    6. 次にビュー・ポートにペイントが呼び出されたときに、クリッピング領域がビューポート・サイズより小さい場合には、タイマーが開始され全体をペイントし直す。
    通常、この方法の方が格段に速くできます。 バッキング・ストア法と比較すると、この方法はオフスクリーン・バッファを維持するオーバーヘッドとcopyAreaを2回実行することを避けることができます。 バッキング・ストア以外の場合と比較すると、ペイント領域を大幅に削減できます。

    この方法は、ビューポートが他のウィンドウで隠されるか、または部分的にオフスクリーンである場合、バッキング・ストア法よりも速度が遅くなります。 他のウィンドウでビューポートが隠されると、copyAreaがガベージをコピーし、システムがペイント・イベントを生成して、新たに出現した領域をペイントする必要があることを通知します。 これを処理する唯一の方法は、ビューポート全体をペイントしなおすことです。ただし、バッキング・ストアの場合に比べてパフォーマンスが低下することがあります。 ほとんどのアプリケーションでは、ごくまれに、ビューポートが他のウィンドウで隠されている、またはオフスクリーンであるときにユーザーがスクロールすることがあるため、この最適化機能はビューポートが隠された場合のパフォーマンス・ヒットとして多くの場合価値があります。

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

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

    導入されたバージョン:
    1.2
    関連項目:
    JScrollPane
    • フィールドの詳細

      • isViewSizeSet

        protected boolean isViewSizeSet
        ビュー・ポートの寸法が決められている場合にtrueを返します。 デフォルトはfalseです。
      • lastPaintPosition

        protected Point lastPaintPosition
        最後にペイントされたviewPositionです。バッキング・ストア・イメージがどのくらい有効かを知ることができます。
      • backingStore

        @Deprecated
        protected boolean backingStore
        非推奨。
        Java 2プラットフォーム1.3以降使われていません
        このビューポートでその内容のオフスクリーン・イメージが維持されている場合に、trueを返します。維持されている場合は、表示を構築するためにビュー・オブジェクトにアクセスするのではなく、高速の「Bit blit」処理を使用してスクロールを実行できます。 デフォルトはfalseです。
        関連項目:
        setScrollMode(int)
      • backingStoreImage

        protected transient Image backingStoreImage
        バッキング・ストアに使用されるビュー・イメージです。
      • scrollUnderway

        protected boolean scrollUnderway
        scrollUnderwayフラグは、JListなどのコンポーネントで使用されます。 JListで下矢印キーが押され、選択されているセルがリストの最後のセルである場合、scrollpaneはオートスクロールします。 ここで、選択されていたセルはペイントし直す必要があるため、setViewPosition(Point)の明示的な呼出しがある場合にだけ、ビュー・ポートが最適化されたペイントをするためにフラグが必要になります。 setBoundsがほかのルートを介して呼び出される場合、フラグはオフになり、ビューは普通にペイントし直されます。 これとは別に、JViewportクラスからこれを削除し、setBackingStoreEnabledを使用してJListにこの場合の制御をさせる方法もあります。 デフォルトはfalseです。
      • BLIT_SCROLL_MODE

        public static final int BLIT_SCROLL_MODE
        graphics.copyAreaを使用してスクロールを実装します。 この方法がほとんどのアプリケーションにとってもっとも速い方法です。
        導入されたバージョン:
        1.3
        関連項目:
        setScrollMode(int)定数フィールド値
      • BACKINGSTORE_SCROLL_MODE

        public static final int BACKINGSTORE_SCROLL_MODE
        ビュー・ポートのコンテンツをオフスクリーン・イメージに描画します。 この方法は以前は、JTableのデフォルトでした。 この方法は、場合によっては「Blitモード」で有用ですが、かなりの量の余分なRAMが必要となります。
        導入されたバージョン:
        1.3
        関連項目:
        setScrollMode(int)定数フィールド値
      • SIMPLE_SCROLL_MODE

        public static final int SIMPLE_SCROLL_MODE
        このモードはスクロール・ペインをスクロールするたびに全コンテンツを再描画するという非常に簡単なメソッドを使用します。 これはSwing 1.0およびSwing 1.1のデフォルト動作でした。 ほかの2つのオプション(モード)はどちらも良いパフォーマンスを提供する場合が大半です。
        導入されたバージョン:
        1.3
        関連項目:
        setScrollMode(int)定数フィールド値
    • コンストラクタの詳細

      • JViewport

        public JViewport()
        JViewportを作成します。
    • メソッドの詳細

      • getUI

        public ViewportUI getUI()
        このコンポーネントを描画するL&Fオブジェクトを返します。
        オーバーライド:
        クラスJComponentgetUI
        戻り値:
        ViewportUIオブジェクト
        導入されたバージョン:
        1.3
      • updateUI

        public void updateUI()
        現在のルック・アンド・フィールからの値にUIプロパティをリセットします。
        オーバーライド:
        updateUI 、クラス:  JComponent
        関連項目:
        JComponent.updateUI()
      • addImpl

        protected void addImpl​(Component child,
                               Object constraints,
                               int index)
        JViewportの1つの軽量な子を設定します。nullも指定できます。 (ビューポート全体を占める子は1つのみなので、constraintsおよびindex引数は無視されます。)
        オーバーライド:
        addImpl、クラス: Container
        パラメータ:
        child - ビュー・ポートの軽量なchild
        constraints - 遵守されるべきconstraints
        index - インデックス
        関連項目:
        setView(java.awt.Component)
      • remove

        public void remove​(Component child)
        Viewportの1つの軽量な子を削除します。
        オーバーライド:
        remove、クラス: Container
        パラメータ:
        child - 削除されるコンポーネント
        関連項目:
        setView(java.awt.Component)
      • scrollRectToVisible

        public void scrollRectToVisible​(Rectangle contentRect)
        ビュー内のRectangleが可視になるようにビューをスクロールします。

        このメソッドは、スクロールの前にビューを検証します。ビューが現在無効な場合は、isValidがfalseを返します。 包含関係の階層を作成しているときに過剰な検証を避けるため、このメソッドは、ピアを持たない上位クラスの有無、有効なルート・クラスの有無、およびWindowまたはAppletのどちらかでない上位クラスの有無については検証しません。

        このメソッドは、有効なビュー・ポートの範囲外のスクロールは行いません。contentRectがビュー・ポートより大きい場合、スクロールはビュー・ポート境界の範囲内に限定されます。

        オーバーライド:
        scrollRectToVisible 、クラス:  JComponent
        パラメータ:
        contentRect - 表示するRectangle
        関連項目:
        JComponent.isValidateRoot(), Component.isValid()
      • setBorder

        public final void setBorder​(Border border)
        ビュー・ポートは、通常の親または子のクリッピングでその子(「ビュー」と呼ばれる)を「スクロール」します。通常、ビューはスクロールとは反対の方向に移動します。 null以外のボーダー(または0以外のインセット)は、サポートされていません。これは、このコンポーネントのジオメトリが、サブクラス化を難しくするほど複雑になるのを防ぐためです。 ボーダー付きのJViewportを生成するには、ボーダーを持つJPanelにそれを追加します。

        注: bordernull以外の場合、ボーダーがJViewPortではサポートされていないためこのメソッドは例外をスローします。

        オーバーライド:
        setBorder 、クラス:  JComponent
        パラメータ:
        border - 設定するBorder
        例外:
        IllegalArgumentException - このメソッドは実装されていない
        関連項目:
        Border, CompoundBorder
      • getInsets

        public final Insets getInsets()
        JViewportではボーダーがサポートされていないため、イン・セット(ボーダー)の寸法を(0,0,0,0)として返します。
        オーバーライド:
        getInsets 、クラス:  JComponent
        戻り値:
        大きさゼロ、原点ゼロのRectangle
        関連項目:
        setBorder(javax.swing.border.Border)
      • getInsets

        @BeanProperty(expert=true)
        public final Insets getInsets​(Insets insets)
        このJViewportのイン・セット値を含むInsetsオブジェクトを返します。 渡されたInsetsオブジェクトはふたたび初期化され、このオブジェクト内のすべての既存の値は上書きされます。
        オーバーライド:
        getInsets 、クラス:  JComponent
        パラメータ:
        insets - 再利用できるInsetsオブジェクト
        戻り値:
        このビュー・ポートのイン・セット値
        関連項目:
        getInsets()
      • isOptimizedDrawingEnabled

        public boolean isOptimizedDrawingEnabled()
        JViewportは(JComponentの)このメソッドのデフォルト実装をオーバーライドし、falseを返します。 その結果、描画機構はJViewport子に直接メッセージを送るのではなく、Viewportpaintの実装を呼び出します。
        オーバーライド:
        isOptimizedDrawingEnabled 、クラス:  JComponent
        戻り値:
        false
      • isPaintingOrigin

        protected boolean isPaintingOrigin()
        スクロール・モードがBACKINGSTORE_SCROLL_MODEで、JViewportまたはその上位オブジェクトからペイントが実行される場合は、trueを返します。 それ以外の場合はfalseを返します。
        オーバーライド:
        isPaintingOrigin 、クラス:  JComponent
        戻り値:
        スクロール・モードがBACKINGSTORE_SCROLL_MODEの場合はtrue。
        関連項目:
        JComponent.isPaintingOrigin()
      • reshape

        public void reshape​(int x,
                            int y,
                            int w,
                            int h)
        このビュー・ポートの境界を設定します。 ビュー・ポートの幅または高さが変更された場合は、StateChangedイベントをトリガーします。
        オーバーライド:
        reshape 、クラス:  JComponent
        パラメータ:
        x - 起点の左端
        y - 起点の上端
        w - ピクセル単位の幅
        h - ピクセル単位の高さ
        関連項目:
        JComponent.reshape(int, int, int, int)
      • setScrollMode

        @BeanProperty(bound=false,
                      enumerationValues={"JViewport.BLIT_SCROLL_MODE","JViewport.BACKINGSTORE_SCROLL_MODE","JViewport.SIMPLE_SCROLL_MODE"},
                      description="Method of moving contents for incremental scrolls.")
        public void setScrollMode​(int mode)
        ビューポート・コンテンツのスクロール・メソッドを制御するために使用します。 このモードを変更して最高のパフォーマンスを得ることをお勧めします。
        パラメータ:
        mode - 次の値のいずれか。
        • JViewport.BLIT_SCROLL_MODE
        • JViewport.BACKINGSTORE_SCROLL_MODE
        • JViewport.SIMPLE_SCROLL_MODE
        導入されたバージョン:
        1.3
        関連項目:
        BLIT_SCROLL_MODE, BACKINGSTORE_SCROLL_MODE, SIMPLE_SCROLL_MODE
      • getScrollMode

        public int getScrollMode()
        現在のスクロール・モードを返します。
        戻り値:
        scrollModeプロパティ
        導入されたバージョン:
        1.3
        関連項目:
        setScrollMode(int)
      • isBackingStoreEnabled

        @Deprecated
        public boolean isBackingStoreEnabled()
        非推奨。
        Java 2プラットフォームv1.3以降は、getScrollMode()に置き換えられています。
        このビュー・ポートがその内容のオフスクリーン・イメージを維持している場合にtrueを返します。
        戻り値:
        scrollModeBACKINGSTORE_SCROLL_MODEの場合はtrue
      • setBackingStoreEnabled

        @Deprecated
        public void setBackingStoreEnabled​(boolean enabled)
        非推奨。
        Java 2プラットフォームv1.3以降は、setScrollMode()に置き換えられています。
        trueの場合、このビュー・ポートはその内容のオフスクリーン・イメージを維持します。 このイメージは、viewPositionに対する一方向のわずかな変更に対するコストを削減するために使用されます。 ビュー・ポート全体をペイントし直すのではなく、Graphics.copyAreaを使用してスクロールを実行します。
        パラメータ:
        enabled - trueの場合、オフスクリーン・バッキング・ストアを維持する
      • getView

        public Component getView()
        JViewportの1つの子またはnullを返します。
        戻り値:
        ビュー・ポートの子。存在しない場合はnull
        関連項目:
        setView(java.awt.Component)
      • setView

        public void setView​(Component view)
        JViewportの1つの軽量な子(view)を設定します。nullも指定できます。
        パラメータ:
        view - ビュー・ポートの新しい軽量な子
        関連項目:
        getView()
      • getViewSize

        public Dimension getViewSize()
        ビューのサイズが明示的に設定されていない場合は、適切なサイズを返します。設定されている場合は、ビューの現在のサイズを返します。 ビューがない場合は、0,0を返します。
        戻り値:
        ビューのサイズを指定するDimensionオブジェクト
      • setViewSize

        public void setViewSize​(Dimension newSize)
        ビューのサイズを設定します。 状態変更イベントがトリガーされます。
        パラメータ:
        newSize - ビューの新しいサイズを指定するDimensionオブジェクト
      • getViewPosition

        public Point getViewPosition()
        ビュー・ポートの左上隅に表示されるビューの座標を返します。ビューがない場合は0,0を返します。
        戻り値:
        左上の座標を示すPointオブジェクト
      • setViewPosition

        public void setViewPosition​(Point p)
        ビュー・ポートの左上隅に表示されるビューの座標を設定します。ビューがない場合は何も行いません。
        パラメータ:
        p - 左上の座標を示すPointオブジェクト
      • getViewRect

        public Rectangle getViewRect()
        始点がgetViewPosition、サイズがgetExtentSizeである矩形を返します。 これは、ビューの座標で示されたビューの可視部分です。
        戻り値:
        ビューの座標を使用してビューの可視部分を示すRectangle
      • computeBlit

        protected boolean computeBlit​(int dx,
                                      int dy,
                                      Point blitFrom,
                                      Point blitTo,
                                      Dimension blitSize,
                                      Rectangle blitPaint)
        バッキング・ストア・イメージの左上隅に現在oldLocが含まれており、newLocにスクロールしている場合のBlitのパラメータを計算します。 パラメータは、Blitで要求される値を返すために変更されます。
        パラメータ:
        dx - 水平方向のデルタ
        dy - 垂直方向のデルタ
        blitFrom - Blit元のPoint
        blitTo - Blit先のPoint
        blitSize - Blitする領域のDimension
        blitPaint - Blit先の領域
        戻り値:
        パラメータが変更されBlitの準備ができた場合はtrue、そうでない場合はfalse
      • getExtentSize

        public Dimension getExtentSize()
        ビューの可視部分のサイズをビューの座標で返します。
        戻り値:
        ビューのサイズを指定するDimensionオブジェクト
      • toViewCoordinates

        public Dimension toViewCoordinates​(Dimension size)
        ピクセル座標のサイズをビュー座標に変換します。 「論理座標」をサポートするビュー・ポートのサブクラスは、このメソッドをオーバーライドします。
        パラメータ:
        size - ピクセル座標を使用するDimensionオブジェクト
        戻り値:
        ビューの座標に変換されたDimensionオブジェクト
      • toViewCoordinates

        public Point toViewCoordinates​(Point p)
        ピクセル座標の点をビューの座標に変換します。 「論理座標」をサポートするビュー・ポートのサブクラスは、このメソッドをオーバーライドします。
        パラメータ:
        p - ピクセル座標を使用するPointオブジェクト
        戻り値:
        ビューの座標に変換されたPointオブジェクト
      • setExtentSize

        public void setExtentSize​(Dimension newExtent)
        ビュー座標を使用してビューの可視部分のサイズを設定します。
        パラメータ:
        newExtent - ビューのサイズを指定するDimensionオブジェクト
      • createViewListener

        protected JViewport.ViewListener createViewListener()
        ビューのリスナーを生成します。
        戻り値:
        ViewListener
      • createLayoutManager

        protected LayoutManager createLayoutManager()
        サブクラスがこのメソッドをオーバーライドすると、コンストラクタで別のレイアウト・マネージャ(またはnull)をインストールできます。 JViewportにインストールするLayoutManagerを返します。
        戻り値:
        LayoutManager
      • removeChangeListener

        public void removeChangeListener​(ChangeListener l)
        ビューのサイズ、位置、またはビュー・ポートの長さが変更されるたびに通知されるリストからChangeListenerを削除します。
        パラメータ:
        l - 削除するChangeListener
        関連項目:
        addChangeListener(javax.swing.event.ChangeListener)
      • getChangeListeners

        public ChangeListener[] getChangeListeners()
        addChangeListener()を使用してこのJViewportに追加されたすべてのChangeListenerの配列を返します。
        戻り値:
        追加されたすべてのChangeListener。リスナーが追加されていない場合は空の配列
        導入されたバージョン:
        1.4
      • repaint

        public void repaint​(long tm,
                            int x,
                            int y,
                            int w,
                            int h)
        RepaintManagerによってpaintが1回だけ実行されるように、常に親の座標系で再ペイントします。
        オーバーライド:
        repaint 、クラス:  JComponent
        パラメータ:
        tm - 更新までの最大時間(ミリ秒単位)
        x - x座標(左からのピクセル数)
        y - y座標(上からのピクセル数)
        w - 幅
        h - 高さ
        関連項目:
        Component.update(java.awt.Graphics)
      • paramString

        protected String paramString()
        このJViewportの文字列表現を返します。 このメソッドはデバッグ専用であり、返される文字列の内容および形式は実装によって異なります。 返される文字列は空の場合がありますが、nullにはなりません。
        オーバーライド:
        paramString 、クラス:  JComponent
        戻り値:
        このJViewportの文字列表現
      • firePropertyChange

        protected void firePropertyChange​(String propertyName,
                                          Object oldValue,
                                          Object newValue)
        リスナーにプロパティの変更を通知します。 これをサブクラス化してwindowBlitプロパティを更新します。 putClientPropertyプロパティはfinalです。
        オーバーライド:
        firePropertyChange 、クラス:  Component
        パラメータ:
        propertyName - プロパティ名が格納されている文字列
        oldValue - プロパティの古い値
        newValue - プロパティの新しい値
      • getAccessibleContext

        public AccessibleContext getAccessibleContext()
        このJViewportに関連付けられたAccessibleContextを取得します。 ビュー・ポートの場合、AccessibleContextはAccessibleJViewportの形式を取ります。 必要に応じて新規のAccessibleJViewportインスタンスが作成されます。
        定義:
        getAccessibleContext、インタフェース: Accessible
        オーバーライド:
        getAccessibleContext、クラス: Component
        戻り値:
        このJViewportのAccessibleContextとして機能するAccessibleJViewport