前回、テキストボックスの文字制限で躓いた。
だから、テキストボックスは破棄してcanvasに描画することにした。
マイピクチャにあるファイルを読み込んでアーティスト情報を表示。
アーティストを選択すると、曲情報を拾ってきて表示。
ここまでは、前回と同じ。次からがちょっと違う。
曲名を選択し、目的の歌詞情報が見つかったら、
それを一度スクラッチパッドにぶち込むこみ、panelからcanvasに切り替えて、
スクラッチパッドの内容を読み込んで描画するようにした。
まず、改行の問題がある。スクラッチバッドに読み込んだ時点では1行となっているので、
これを改行コードで1行単位に分割して、表示することにした。これは特に難しくなかった。
で、問題になったのが画面のスクロールの問題。
canvasでは画面のスクロールができないので、repaint()で再描画するしかない。
1行単位でスクロールさせることにする。方向キーの下が押されたとき、
または上が押されたときにrepaintすることにした。
適当な変数を用意して、下が押された場合には+1して、
上が押されたときには-1する。そして、描画する時にこの変数の分だけ
1行単位の描画をスキップさせてやることでスクロールできるようになった。
さらに、問題はある。1行単位に分割するのはいいのだが、画面の幅をはみ出す場合がある。
これは、ドキュモのAPIリファレンスに載っていたgetLineBreakのサンプルを弄って対応。
で、とりあえず完成したっぽい。
ただ、ファイルの読み込みが遅いのが難点。
ファイルの設計と検索処理を見直せば早くなりそう。
あとはエラーの対応ぐらい。ほとんどスルーさせてるから、落ちても何がなんだか意味不明。
まあ、どうせ自分しか使わないのでこれでよしとしておこう。

|
|