星のマークとフォントの設定

座標を定義して星を描き、明朝体の大きな文字でタイトルを表示します。

前田稔の超初心者のプログラム入門

プログラムの説明

  1. 以下の説明を参考にして、プログラムは各自で作成して下さい。
    プログラムは StarMark.java とします。
  2. Swing を使うので java.awt と javax.swing をインポートします。
    class StarMark は JFrame を継承します。
    xt[], yt[] は星の座標を格納するテーブルで g.fillPolygon(xt,yt,10) で星を描画します。
        import java.awt.*;
        import javax.swing.*;
    
        class StarMark extends JFrame
        {
    	int xt[]= { 200,221,295,235,258,200,141,164,104,178 };
    	int yt[]= { 90,160,159,201,270,227,270,201,159,160 };
        
  3. paint() は描画処理で呼び出されるメソッドです。
    g.setFont() で文字フォントを設定します。
    "MS P明朝" の文字は全角ですが、間の空白は半角でタイプします。
    マイナーな Font を設定するとサポートされていないことがあるので "Helvetica" が無難かも知れません。
    フランスの国旗を表示する ではコンストラクタで Color オブジェクトを設定しましたが、今回は引数の中で直接指定しています。
    Color.red はインスタンス化しなくても使える赤の色です。
    g.fillRect() で塗りつぶした矩形の枠を描画します。
    矩形の中に g.fillPolygon(xt,yt,10) で多角形(星)を描画して塗りつぶします。
        public void paint(Graphics g)
        {	super.paint(g);
            //g.setFont(new Font("Helvetica",Font.PLAIN,32));
            g.setFont(new Font("MS P明朝",Font.PLAIN,32));
            g.drawString("星のマーク",120,65);
            g.setColor(new Color(50,100,150));
            g.fillRect(20,70,350,220);
            g.setColor(Color.red);
            g.fillPolygon(xt,yt,10);
        }
        
  4. ページ先頭の画面が表示されたら完成です。
    "MS P明朝" を設定すると、遅いマシンではフレームが表示されてから文字が表示されるまでに プログラムエラーかと思うほど時間がかかるので覚悟して下さい。
    (古いマシンで実際に計ってみると2分弱かかりました) (^_^;

ソースコード

  1. 同じプログラムを作成するにも方法は千差万別で、プログラマによって、また参照するプロトタイプやそのときの気分によって異なります。
    私の Java のページでは初心者が混乱しないように、なるべく統一した方法でプログラミングしています。
    ATW では Frame を継承する方法を使い、Swing では JFrame を継承する方法を使っています。
    しかし、JFrame を継承した場合でも、その方法は幾通りもあります。
    どの方法が良いとか悪いとかの問題では無く、プログラマの癖(好みの問題)でしょうか。
    ここでは星のマークを描くプログラムをコンストラクタを使わずに作成してみました。
    あなたが作成したプログラムと比べてみて下さい。
  2. StarMark.java のソースコードです。
    //★ 座標を定義して fillPolygon で星を描く    前田 稔
    import java.awt.*;
    import javax.swing.*;
    
    class StarMark extends JFrame
    {
        int xt[]= { 200,221,295,235,258,200,141,164,104,178 };
        int yt[]= { 90,160,159,201,270,227,270,201,159,160 };
    
        // Main
        public static void main(String args[])
        {   StarMark japp = new StarMark();
            japp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            japp.setSize(400,320);
            japp.setVisible(true);
        }
    
        public void paint(Graphics g)
        {	super.paint(g);
            //g.setFont(new Font("Helvetica",Font.PLAIN,32));
            g.setFont(new Font("MS P明朝",Font.PLAIN,32));
            g.drawString("星のマーク",120,65);
            g.setColor(new Color(50,100,150));
            g.fillRect(20,70,350,220);
            g.setColor(Color.red);
            g.fillPolygon(xt,yt,10);
        }
    }
    
  3. ネットに掲載されているプログラムを参照すると、私とは違う方法で作成されたものが沢山あります。
    むしろ私の方法は少数派でしょうか。
    要は形式に囚われず、その本質を理解することが重要です。
    様々なプログラミング方法に付いては「Java2 Program Note/Window(Form) の生成」を参照して下さい。

超初心者のプログラム入門(Java2)