以下のプログラムでは、
/** * ボタン、スライダなどでパラメータ設定するサンプル * step2: ボタンやスライダにリスナーをつける **/ import java.awt.*; import javax.swing.*; import java.awt.event.*; // リスナー用 import javax.swing.event.*; 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_2 = 100; // スライダ2の値の単位 /************ コンストラクタ ************************/ 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/scale_2)); /******** step2 *******************************/ /** スライダーやボタンにリスナーをつける */ exitBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { System.exit(0); } }); slider_1.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { label_1.setText(Integer.toString(slider_1.getValue())); } }); slider_2.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { label_2.setText(Double.toString(slider_2.getValue()/scale_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); // 見えるようにする } } /** step3での課題: シミュレーション本体の可視化用ウィンドウを別に作り、 パラメータ設定用ウィンドウからの「開始」「停止」ボタンで操作できるようにする。 マルチスレッドプログラムにすることで実現 (本体クラスにRunnableインターフェイスをインプリメント) */