情報メディア実験II メディア処理プログラミング2

(Java GUIプログラミング)補足ページ

 

スライダの実装方法に関するヒント

再生中の位置を示すスライダを実装しよう.

指導書には文章で説明してあるが,それだけでは実装する方法が考えられない人向けに,ある程度,ヒントあるいは実装例を書いておく.なお,この部分は実装できてなくてもレポート上は問題ない.

(1)MyMIDITunes クラス「デザイン」モードで GUI 部品 を設置

★「スライダ」を設置

•パレットから「スライダ」選択,適切な場所に設置.設置したスライダを選択.

•「プロパティー」→「コード」にて,「変数名」を変更.実装例では「jSliderMusic」とする.


★スライダの最小値および最大値を設定

•「プロパティー」→「プロパティー」にて,「maximum」を 1000,「minimum」 を 0 とする.つまり,スライダの左端が最小値で 0,右端が最大値 1000 となる.また「value」 を 0 とする.これは最初の再生位置である.ここでの設定は initComponents メソッド内 に JSlider クラスのインスタンス jSlideMusic が生成され,プロパティーでの設定が反映される.


★総再生時間表示

•パレットから「ラベル」選択,適切な場所(スライダの右側など)に設置.

•「プロパティー」→「コード」にて,「変数名」を変更.実装例では「jLabelMusicTime」.


★再生位置の時間表示

•パレットから「ラベル」選択,適切な場所(スライダの左側など)に設置.

•「プロパティー」→「コード」にて,「変数名」を変更. 実装例では「jLabelMusicTime」とする.

(2) MyMIDITunes クラスのコンストラクタ内で javax.swing.Timer を用い,割り込みが入るたびに,MIDI ファイルが再生中であれば,現再生位置を計算,スライダに設定する.現再生位置は 最大値で正規化した値を用いる.この正規化再生位置の計算は,MyMIDIPlayer クラス内のメソッドとして実装するとよい.

(3)MyMIDITunesクラスのメソッドjTableMusicMouseReleased()

★jTableMusicでマウスクリックしてリリースしたときの処理(曲の選択).

★選択された曲名,作者名を表示.

★指定されたMIDIファイルを開き,シーケンサを初期化する.

•MyMIDIPlayerクラスのメソッドopenSetSequence()で,初期化および演奏時間(総再生時間)を取得.

★演奏時間(総再生時間)をGUI上のラベルjLabelMusicTimeで表示.

(4)MyMIDIPlayerクラスのメソッドopenSetSequence()

★MIDIファイルのフルパス名を表すFile変数 file_midiを入力.

★シーケンサ初期化.

★演奏時間(総再生時間)を取得.マイクロ秒で返す.

•SequencerクラスのメソッドgetMicrosecondLength()を使用.

★マイクロ秒から時間を分と秒で表す文字列表示「mm:ss」へ変換.自作メソッドconvertMicroToStringTime()を使用.

(5)再生中の位置取得

★MyMIDIPlayerクラスのメソッドgetNormalizedPosition()を実装.

★曲の長さsongMicroLengthで正規化.

★スライダ最大値1000に対しての値へ変換(1000倍).

(6)再生中の位置時刻を文字列で取得

★MyMIDIPlayerクラスのメソッドgetCurrentPositionStringTime()を実装.

★メソッドconvertMicroToStringTime()を使用.