トップページ > フーリエ変換入門(FFT入門) > グラフの準備(1)
今回はフーリエ変換を解説するために、グラフを表示するだけのアプリケーションさえあれば十分です。 なぜExcelじゃダメなの…とか、わざわざ自分でプログラミングする必要ないだろ…とか言われそうです。 理由としては、Excelを使わないのは単に自分がレポートなどで使っていて飽きたからです(爆) そして、わざわざ自分の手でコードを打ちこむのは、既存のグラフを見るだけで終わらせるのと自分でグラフを作成する のとでは、全く同じグラフであっても頭に入るスピードが違うと感じるからです。 また、純粋に楽しいからとか、達成感があるからという理由もあります(^^;
Javaには“Canvas”(キャンバス)という2次元画像描画に便利なクラスが用意されているので、 Canvasクラスを使ってお手軽にグラフ描画アプリケーションを自作してしまいます。 こうして自作アプリケーションとして作っておくと、後々マイコンとPCを連携させたシステムを 作るときに応用が広がるという利点もあります。最終的には、すべて自作の電子工作へつなげる ことを考えます。数学は、使って便利な道具ということで。
まずはCanvasクラスで軽く遊ぶために、最低限のアプリケーションを作ってしまいます。 非常に簡単な構成です。例のごとく、フレーム(ウィンドウ)の上にパネル(コンテント・ペイン)を貼って、 その上にキャンバスを乗せるだけです。
ここで、Canvasに図形を書くためにはCanvasクラス内の“paint()”(ペイント)メソッドを使うことになります。 メソッドということで、処理内容はあらかじめ決まってしまっています。 このことから、通常Canvasを使って図形を書く場合はCanvasクラスを継承した自作クラスを作った上で、その中の paint()メソッドをオーバーライドすることになります。コーディングはとても単純なので、 まずはpaint()メソッドに何も書かないでアプリケーションの骨組だけ作ってしまいましょう。 作成するクラスは上図のとおり2つで、アプリケーションの土台となる“Canvas_test”クラスと、 Canvasクラスを継承した自作クラスの“TestCanvas”クラスです。
//****************************************************************************** //Canvasの各メソッドを試すプログラム //****************************************************************************** //============================================================================== //クラスライブラリのインポート //============================================================================== import java.awt.*; import javax.swing.*; //============================================================================== //メインクラス //============================================================================== public class Canvas_test { //============================================================================== //メインメソッド //============================================================================== public static void main(String[] args) { //============================================================================ //フレームの作成 JFrame frame = new JFrame(); //タイトルを設定 frame.setTitle("Canvas_test"); //フレーム(ウィンドウ)のサイズを設定 frame.setBounds(0,0,480,380); //×ボタンを押したときの処理を記述 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //ウィンドウサイズは固定 frame.setResizable(false); //レイアウトは手動 frame.setLayout(null); //============================================================================ //コンテントペインの作成 JPanel cp = new JPanel(); //レイアウトは手動 cp.setLayout(null); //フレームにコンテントペインを登録 frame.add(cp); //コンテントペインの貼り付け位置・大きさを設定 cp.setBounds(38,20,400,300); //============================================================================ //キャンバスの作成 TestCanvas canvas = new TestCanvas(); //キャンバスをコンテント・ペインに登録 cp.add(canvas); //キャンパスの位置はコンテントペインに合わせる。 //キャンバスのサイズはコンテントペインと同じにする。 canvas.setBounds(0,0,400,300); //============================================================================ //最後に、フレームの可視化 frame.setVisible(true); } }
//****************************************************************************** //最低限の、自作Canvasクラス //TestCanvas.java //****************************************************************************** //============================================================================== //クラスライブラリのインポート //============================================================================== import java.awt.*; //============================================================================== //TestCanvasクラス //============================================================================== class TestCanvas extends Canvas { //============================================================================== //paint()メソッド //============================================================================== public void paint(Graphics g) { //ここに描画処理を書きます。 } }
上の2つのソースコードを、それぞれの名前で同じディレクトリに保存します。ディレクトリは、例のごとく Cドライブ直下など分かりやすい場所で、名前には日本語を含めないようにしておきます。 コンパイル方法はJavaプログラムをコンパイルするなどを参考にしてください。
コンパイルすると、上画面のようになります。今回はpaint()メソッド内に何も記述していないので、 当然のことながら何も表示されません。次回、このCnavasクラスで遊びます。