昔の日の丸

Since 2003.04.15  

信玄と謙信

今回は、白地に赤丸という今の日の丸とは違う日の丸の話です。
戦国時代、上杉謙信は「毘」の旗と共に紺地日の丸を使ったそうです。対して、好敵手武田信玄は今の日の丸と同じ白地日の丸でした。
インターネットで検索すると、「黒地に赤丸」という記事もあったのですが、どうも紺地に日の丸が正しいようです。

参照 米沢観光協会馬標は紺地に日の丸
播磨屋.com 気まぐれ浪人
居酒屋りょうさんのページでは、紺地日の丸の図柄の日本酒「東光正宗・純米吟醸・日本響」が紹介されていました。

これを描くアプレットを作るとすると、別のプログラムにするという方法もあります。
たとえば、完成版を「basic」フォルダに別名[Kensinflag.java]でコピーして、次の様に書き換えるという方法です。

上部略

public class Kensinflag extends Applet {

中略

    public void init() {
        setBackground(new Color(0, 0, 128));
    }
}

パラメータ渡し

ここでは、応用範囲の広い方法として、「パラメータ渡し」を使ってみます。
パラメータ渡しというのは、HTMLファイルの中で、<applet></applet> の間に、
<param name="abc" value="xxx">
というタグをはさみ、アプレットがこれを受け取って動作を変えるという方法です。

早速、分析に入ります
今の日の丸と謙信の日の丸は地の色が違います。
これをパラメータとして渡すのですが、前回までで作成したアプレットでは、標準的な Colorクラスのコンストラクタ(インスタンスを生成する命令)
Color(int r, int g, int b) 範囲 (0 〜 255) の指定された赤、緑、青の値を使って、不透明な sRGB カラーを生成します。
を使いましたが、これだと、赤、緑、青の値をそれぞれ指定しなければなりませんので、3つのパラメータが必要です。
別のコンストラクタに
Color(int rgb) ビット 16-23 の赤色成分、ビット 8-15 の緑色成分、およびビット 0-7 の青色成分から合成された、指定された RGB 値を使って、不透明な sRGB カラーを生成します。
があります。これだと桁数24ビットの値1つ渡せばOKです。
24ビットの値は、16進数6桁で表記した数値をjava.lang.Integerクラスの
parseInt(String s, int radix) 2 番目の引数に指定された基数を元にして、文字列の引数を符号付き整数として構文解析します。
に渡せば取り出せます。

コーディングから実行まで

さっそく、プログラム作業に入ります。
/net/sys5jp/basic/Sunflag.javaにコードを書き加えることとします。

1 /*<applet code="net/sys5jp/basic/Sunflag.class"
2     codebase="../../../"
3     width=400 height=280>
4 </applet>*/
5
6 package net.sys5jp.basic;
7
8 import java.applet.*;
9 import java.awt.*;
10 import java.lang.*;
11
12 public class Sunflag extends Applet {
13         Dimension dim;
14         Color suncolor = new Color(255, 0, 0);
15         Color backcolor = new Color(255, 255, 255);
16
17     public void paint(Graphics g) {
18         int x, y, dist;
19
20         dim = getSize();
21         x = dim.width * 28 / 100;
22         y = dim.width * 14 / 100;
23         dist = dim.width * 42 / 100;
24         g.setColor(suncolor);
25         g.fillOval(x, y, dist, dist);
26     }
27
28     public void init() {
29         Color color;
30         String value = getParameter("backcolor");
31         try { color = new Color(Integer.parseInt(value, 16)); }
32         catch(Exception e) { color = null; }
33         if(color != null) {
34             backcolor = color;
35         }
36         setBackground(backcolor);
37     }
38 }

書き終えたら、プログラムをコンパイルしてください。
さらに、/net/sys5jp/Sunflag.html を[basic]フォルダにコピーして、次のように書き換えて、開いてみましょう。

<html>
<head>
<style>
<!--
body {background-color:rgb(192,192,192)}
.center {text-align:center}
td {padding:5px 10px}
-->
</style>
</head>
<body>
<table class="center" border="2">
<tr> <td>
<applet code="net/sys5jp/basic/Sunflag.class"
    codebase="../../../"
    width=200 height=140>
</applet>
</td> <td>
<applet code="net/sys5jp/basic/Sunflag.class"
    codebase="../../../"
    width=200 height=140>
        <param name="backcolor" value="00007f">
</applet>
</td></tr>
<tr>
<td>日の丸</td><td>謙信の旗</td>
</tr>
</table>
</body>
</html>

次のように表示されるはずです。

トップヘ 目次ヘ 前ヘ 次ヘ