【Java】GUIアプリ:スクロールバーの作成と移動時の値を取得する

■作成するプログラムの概要

GUIアプリケーションを作成する

GUI画面にスクロールバーを作成する。

スクロールバーの移動に合わせて値(0〜100)をラベルに出力する。
なお、ラベル出力内容は以下の通り。
・0の場合は「0:一番左」
・50の場合は「50:中央」
・100の場合は「100:一番右」

▼スクロールバーの作成

Javaでスクロールバーを作成する時は、「JScrollBar」を使用する。

JScrollBar scroll_bar = new JScrollBar(JScrollBar.HORIZONTAL, 0, 5, 0, 105);

第1引数:「HORIZONTAL(水平方向)」か「VERTICAL(垂直方向)」を指定する。
第2引数:初期値
第3引数:バーの長さ
第4引数:最小値
第5引数:最大値

■フローチャート

▼初期処理(コンストラクタ)

▼スクロールバーを移動した時の処理

■プログラム仕様

▼初期処理(コンストラクタ)

入力処理内容出力
スクロールバーを移動した時の処理を追加する。
画面にスクロールバーを配置する。(*1)
画面にラベルを配置する。(*2)
画面を閉じたとき、プログラムも終了するように設定する。
画面サイズを設定する。
横:300
縦:100
GUI画面を可視化する。

(*1)スクロールバーは、メンバ変数としてフィールドに宣言する。
第1引数:「HORIZONTAL(水平方向)」
第2引数:初期値(0)
第3引数:バーの長さ(5)
第4引数:最小値(0)
第5引数:最大値(105)

(*2)ラベルは、メンバ変数としてフィールドに宣言する。
第1引数:初期値(0:一番左)
第2引数:表示位置(CENTER)

▼スクロールバーを移動した時の処理

入力処理内容出力
現在のスクロールバーの位置(値:0〜100)を取得する。
▼条件分岐:スクロールバーの位置(値)
|【0の場合】
|「0:一番左」を出力する。①
-----
|【50の場合】
|「50:中央」を出力する。②
-----
|【100の場合】
|「100:一番左」を出力する。③
-----
|【上記以外】
|「<スクロールの位置(値)>」を出力する。④
【ラベル】
①「0:一番左」
②「50:中央」
③「100:一番右」
④「<スクロールの位置(値)>」

■サンプルコード

import java.awt.BorderLayout;
import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollBar;

class MakeScrollBar extends JFrame implements AdjustmentListener {
	// フィールド宣言
	private JScrollBar scroll_bar = 
			new JScrollBar(JScrollBar.HORIZONTAL, 0, 5, 0, 105);
	private JLabel output_label = 
			new JLabel("0:一番左", JLabel.CENTER);
	
	// コンストラクタ
	public MakeScrollBar() {
		// スクロールバーを移動した時の処理設定
		scroll_bar.addAdjustmentListener(this);
		
		// スクロールバーの配置設定
		getContentPane().add(BorderLayout.NORTH, scroll_bar);
		// ラベルの配置設定
		getContentPane().add(BorderLayout.CENTER, output_label);
		
		// GUIを閉じた時、プログラムも終了
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		// サイズを設定
		setSize(300, 100);
		
		// GUI画面の可視化
		setVisible(true);
	}
	
	// スクロールバーの位置を変更した時の処理
	public void adjustmentValueChanged(AdjustmentEvent ae) {
		// 現在のスクロールバーの位置を取得
		JScrollBar scrollBar_value = (JScrollBar)ae.getSource();
		// ラベルにスクロールバー値を出力
		switch(scrollBar_value.getValue()) {
			case 0:
				output_label.setText("" + scrollBar_value.getValue() + ":一番左");
				break;
			case 50:
				output_label.setText("" + scrollBar_value.getValue() + ":中央");
				break;
			case 100:
				output_label.setText("" + scrollBar_value.getValue() + ":一番右");
				break;
			default:
				output_label.setText("" + scrollBar_value.getValue());
		}
	}
}

// メイン処理
public class ChooseScrollBar {
	public static void main(String[] args) {
		new MakeScrollBar();
	}
}

■実行結果

・初期画面(起動時)


・スクロールバーを中央に移動


・スクロールバーを一番右に移動


・スクロールバーを任意の位置に移動

タイトルとURLをコピーしました