スライダーは、「スライド」をする人のことです。。
Sliderクラスは、この動作を提供します。
尚、Sliderはスライド動作のみを提供し、スクロール動作は提供しません。
Sliderは、ロジック的に5つの領域に分かれています。
(1)(4)の領域は、マウスでクリックして少しずつつまみの位置を減少/増加させる領域です。
(2)(5)の領域は、マウスでクリックすることで、大きくつまみの位置を減少/増加させる領域です。
(3)の位置は、つまみで、これをドラッグして任意の場所につまみを移動させる領域です。
(2)(3)(4)の領域は、サイズが動的に変化します。
各領域のサイズ等の設定は、それぞれのメソッドが用意されており、適切なメソッドの呼び出しで行うことができます。 また、すべてを同時に設定したい場合は、setValuesメソッドを使うことで、一括して設定することができます。 一括して設定することで、複数回メソッドを呼び出すオーバーヘッドを減少させたり、 ソースの可読性が向上したりするといったメリットがあります。
また、Sliderを作成するときに、SWT.VERTICALスタイルを設定することで、縦のSliderを作成することも可能です。
setThumb(int)メソッドは、OSによってはサポートされていない場合があります。 そのような環境では、つまみの大きさを調整できません。
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Slider;
public class SliderDemonstrate extends ApplicationWindow {
private SliderDemonstrate() {
super(null);
}
protected Control createContents(Composite parent) {
/* parentの子としてSlider作成 */
Slider slider = new Slider(parent, SWT.HORIZONTAL);
/* (2)(3)(4)の範囲を設定。後の設定メソッドは、ここで設定した値の影響を受ける。 */
slider.setMaximum(99);
slider.setMinimum(0);
/* つまみ領域(3)の左端の位置を一番左に設定
* (maximumとniminumの間の範囲で指定可能) */
slider.setSelection(0);
/* つまみ領域(3)の大きさを設定。
* 領域は0から99までの100あるので、全体1/4のサイズになる */
slider.setThumb(25);
/* ボタン領域(1)(5)をクリックされたときのスライド量を指定 */
slider.setIncrement(1);
/* ページ領域(2)(4)をクリックされたときの
* スライド位置の減少/増加量設定 */
slider.setPageIncrement(25);
slider.pack();
parent.pack();
return parent;
}
public static void main(String[] args) {
Window w = new SliderDemonstrate();
w.setBlockOnOpen(true);
w.open();
Display.getCurrent().dispose();
}
}