モジュール 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
      Deprecated.
      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
    • setUI

      @BeanProperty(hidden=true, visualUpdate=true, description="The UI object that implements the Component\'s LookAndFeel.")public void setUI​(ViewportUI ui)
      このコンポーネントを描画するL&Fオブジェクトを設定します。
      パラメータ:
      ui - ViewportUI L&Fオブジェクト
      導入されたバージョン:
      1.3
      関連項目:
      UIDefaults.getUI(javax.swing.JComponent)
    • updateUI

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

      public String getUIClassID()
      このコンポーネントをレンダリングするL&Fクラスの名前を指定する文字列を返します。
      オーバーライド:
      getUIClassID 、クラス:  JComponent
      戻り値:
      文字列「ViewportUI」
      関連項目:
      JComponent.getUIClassID(), UIDefaults.getUI(javax.swing.JComponent)
    • 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()
    • paint

      public void paint​(Graphics g)
      backingStoreが使用可能かどうかに応じて、バッキング・ストアを介してイメージをペイントするか、または現在表示されている部分だけをペイントし、バッキング・ストアを使用して残りの部分を「Blit」します。
      「Blit」は、PDP-10 BLT (BLock Transfer)命令のことであり、ビットのブロックをコピーします。 (参考のため。)
      オーバーライド:
      paint 、クラス:  JComponent
      パラメータ:
      g - ペイント先となるGraphicsコンテキスト
      関連項目:
      JComponent.paintComponent(java.awt.Graphics), JComponent.paintBorder(java.awt.Graphics), JComponent.paintChildren(java.awt.Graphics), JComponent.getComponentGraphics(java.awt.Graphics), JComponent.repaint(long, int, int, int, int)
    • 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()
      Deprecated.
      Java 2プラットフォームv1.3以降は、getScrollMode()に置き換えられています。
      このビュー・ポートがその内容のオフスクリーン・イメージを維持している場合にtrueを返します。
      戻り値:
      scrollModeBACKINGSTORE_SCROLL_MODEの場合はtrue
    • setBackingStoreEnabled

      @Deprecatedpublic void setBackingStoreEnabled​(boolean enabled)
      Deprecated.
      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
    • addChangeListener

      public void addChangeListener​(ChangeListener l)
      ビューのサイズ、位置、またはビュー・ポートの長さが変更されるたびに通知されるリストにChangeListenerを追加します。
      パラメータ:
      l - 追加するChangeListener
      関連項目:
      removeChangeListener(javax.swing.event.ChangeListener), setViewPosition(java.awt.Point), setViewSize(java.awt.Dimension), setExtentSize(java.awt.Dimension)
    • removeChangeListener

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

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

      protected void fireStateChanged()
      ビューのサイズ、位置、またはビュー・ポートの長さが変更されると、すべてのChangeListenersに通知します。
      関連項目:
      addChangeListener(javax.swing.event.ChangeListener), removeChangeListener(javax.swing.event.ChangeListener), EventListenerList
    • 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