Previous | Next | Trail Map | Creating a User Interface | GUI の構成ブロックであるコンポーネントを使 用する


スクロールバーの使用方法

スクロールバーには 2 つの使い方がある。

スクロールバーを作成するときは、Scrollbar クラス(in the API reference documentation)のインスタンスを作成する必要がある。 また、以下に示す値を、Scrollbar 構築子(in the API reference documentation) に指定するか、またはsetValues() メソッドを呼び出すことによって、初期化しなければならない。その後、スクロールバーを見えるようにする。

int orientation
スクロールバーの方向が水平か垂直かを指示する。Scrollbar.HORIZONTALScrollbar.VERTICAL のどちらかを指定する。
int value
スクロールバーの初期値。 スクロール領域を制御するスクロールバーでは、この値は通常、最初にスクロール領域が表示されるときに可視となる部分の x 値 (水平方向のスクロールバーの場合) か y 値 (垂直方向のスクロールバーの場合) である。 たとえば、上記のアプレットが始動するとき、水平方向と垂直方向のスクロールバーの値はどちらも 0 であり、表示されるイメージ部は (0,0) から始まる。
int visible
スクロール領域の可視部をピクセル単位で表したサイズ。 この値は、スクロールバーが可視になる前に設定されると、スクロールバー (ノブではない) でのクリックによって表示エリアが何ピクセル、シフトするかを決定する。 ただし、スクロールバーが可視になった後に設定しても無効である。スクロールバーが可視になった後に同じ効果を得るには、setPageIncrement() メソッドを使用する。
int minimum
スクロールバーが持ち得る最小値。 スクロール領域を制御するスクロールバーでは、この値は通常 0 (領域の左上隅) である。
int maximum
スクロールバーが持ち得る最大値。 スクロール領域を制御するスクロールバーでは、この値は通常、次のようになる。 (部分的に表示されているコンポーネントのピクセル単位での幅/高さ) − (スクロール領域の現在可視である幅/高さ)

次の図で、上記の値の意味をわかりやすく示す。

上記のアプレットのコードも参照できる。 このコードは 2 つのクラスを定義している。1 つは、イメージを描画する単純な Canvas サブクラス (ScrollableCanvas) である。 もう 1 つは ScrollableCanvas と 2 つの Scrollbar を作成して保持するPanel サブクラス (実際は Applet を拡張した ImageScroller) である。 このプログラムは、スクロール領域を管理する上で重要なことをいくつか示している。

  • スクロール領域がサイズ変更可能な場合、スクロールに関して起こりやすい問題がある。 注意して対応しないと、ユーザが領域の右/下へスクロールした後、領域を大きくするときに、スクロール領域が右/下にブランクスペースを表示してしまうのである。 ユーザがスクロールして右/下に戻ると、ブランクスペースはなくなっている。 不必要にブランクスペースを表示するのを避けるには、スクロール領域のサイズが大きくなるときにComponent の起点をシフトし、有効な新しいスペースを十分に利用できるようにする。次にこの例を示す。

    int canvasWidth = canvas.size().width;
    
    //右側に空のスペースが表示されるときは
    //すべてを右側にシフトする。
    if ((canvas.tx + canvasWidth) > imageSize.width) {
        int newtx = imageSize.width - canvasWidth;
        if (newtx 
         

    次の図に、スクロールの問題とその解決策を示す。


  • Previous | Next | Trail Map | Creating a User Interface | GUI の構成ブロックであるコンポーネントを使用する