GUI tutorial for numerical simulation (1)

ウィンドウを開き、そこにボタン、スライダなどの部品を配置

以上を次のサンプルで確かめてみる。

/**
 *  ボタン、スライダなどでパラメータ設定するサンプル
 *
 *  2つ以上のウィンドウを同時にアクティブにするには
 *  複数のスレッドをたてる ( implements Runable )
 **/

import java.awt.*;
import javax.swing.*;

public class sample_gui extends JPanel {

    /** グラフィック関係変数 */
    JButton startBtn, stopBtn, exitBtn;       // ボタン
    JLabel label_1, label_2;                  // ラベル
    JSlider slider_1, slider_2;                // スライダ

    /** 各種グローバル */
    static int maxSize = 600; // width of window in pixels
    static double scale_1 = 100;

    /************ コンストラクタ ************************/
    sample_gui() {
	/** パラメータ初期値 */
	int  ini_1 = 500, ini_2 = 10;

	/** ボタン生成 */
	startBtn = new JButton("start");
	stopBtn = new JButton("stop");
	exitBtn = new JButton("終了");
	/** スライドバー生成 */
	slider_1 = new JSlider(JSlider.HORIZONTAL, 0, 1000, ini_1);
	slider_2 = new JSlider(JSlider.HORIZONTAL, 0, 100, ini_2);

	/** ラベル生成 */
	label_1 = new JLabel(String.valueOf(ini_1));
	label_2 = new JLabel(String.valueOf(ini_2));

	/** パネルにスライドバー、ラベルを貼る */
	JPanel panel_operation = new JPanel();
	panel_operation.add(startBtn);
	panel_operation.add(stopBtn);
	panel_operation.add(exitBtn);

	JPanel panel_1 = new JPanel();
	panel_1.add(new JLabel("パラメータ1"));
	panel_1.add(slider_1);
	panel_1.add(label_1);

	JPanel panel_2 = new JPanel();
	panel_2.add(new JLabel("パラメータ2"));
	panel_2.add(slider_2);
	panel_2.add(label_2);

	/** 親パネルにボタンと、スライドバー・ラベル を並べる */
	JPanel p = new JPanel();
	p.setLayout(new GridLayout(2, 2));
	p.add(panel_operation);
	p.add(panel_1);
	p.add(panel_2);

	add(p, BorderLayout.NORTH);

    }

    /** main */
    public static void main(String[] args) {

	// パラメータセットのGUIを作成し、表示
	JFrame setParamFrame = new JFrame("パラメータセット"); // 親フレーム
	sample_gui ctr = new sample_gui();  // このクラスの実体を作る(実体名: ctr)
	setParamFrame.getContentPane().add(ctr, BorderLayout.CENTER); // 親フレームに「実体」を貼る
	setParamFrame.setSize(750, 100);    // フレームの大きさ設定
	setParamFrame.setLocation(600, 20); // フレームを置く位置
	setParamFrame.setVisible(true);     // 見えるようにする
    }

}

/**
  step2での課題:

  終了ボタンを押すと、終了する
  スライダーを動かすのに連動して、右横のlabelに数値が変化する

  これらは、部品(GUIオブジェクト)にリスナーをつけることにより実現できる
*/