↑ホーム(よかひよかとき) へ

   使用頻度大のものをコピー&ペーストで使えるよう 「覚え書」 としたものです。 参考になれば喜。 動作確認は自責で。
  JavaScript の覚え書   Javaアプレット の覚え書   Python の覚え書   Perl の覚え書
  おもちゃ箱---HTML5作品(JavaScript)、Javaアプレット作品、Python作品 を多数置いています


よかひよかときの Javaアプレット の覚え書    .
■コメント文
■小数点以下の処理
■算術演算(商、余り、大きい方、小さい方、絶対値、べき乗、平方根、指数、対数)
■乱数を発生

■for文
■switch文
■繰り返し(ループ)やブロックから抜け出す

■テキスト表示
■文字列の比較
■文字列の検索
■文字列から1文字だけを抜き出す
■文字列から何文字か抜き出す
■文字列を分割する(結果を配列として返す)
■文字列の置換

■今日の日付を取得する
■現在の時刻を取得する

■数字を数値に変換
■数式を数値に変換(数式を与えると数値を返す)

■ファイル読み込み(ファイルからデータを入力)
■ファイル出力(データをファイルに出力)-方法1
■ファイル出力(データをファイルに出力)-方法2

■図形を描く
■図形を描く(Graphics2D)

■ボタンを設置する
■スライダーを設置する
■スクロールバーを設置する
■スクロールリスト(リストボックス)を設置する
■チョイスを設置する
■チェックボックスを設置する
■テキストフィールドを設置する
■テキストエリアを設置する

■マウスイベント(マウスに反応させる)
■キーイベント(キーに反応させる)

■リンクのURLに飛ぶ、リンクのURLを別画面で表示


■コメント文   このページのトップへ 説明更新日
Javaアプレット // または /*   */

○ その行の // より後ろに記述された部分はコメントになる。
/**/ で挟まれた部分はコメントになる。複数行になるコメントのときはこちらを使用する。
(なお、HTMLでのコメントは、<!--   -->。また、スタイルシートでのコメントは、/*   */。)


2006.12.30
■小数点以下の処理   このページのトップへ 説明更新日
Javaアプレット (例)
double a, x;

a=13.64; // 正の数のとき
x=Math.ceil(a);
x=Math.floor(a);
x=Math.round(a);

a=-13.64; // 負の数のとき
x=Math.ceil(a);
x=Math.floor(a);
x=Math.round(a);

a=-13.51;
x=Math.round(a);
a=-13.5;
x=Math.round(a);
a=-13.49;
x=Math.round(a);

a=13.64; // 正の数のとき
x1=(int)(a);
a=-13.64; // 負の数のとき
x1=(int)(a);






切り上げる。x=14.0 になる。
切り捨てる。x=13.0 になる。
四捨五入する。x=14.0 になる。


x=-13.0 になる。
x=-14.0 になる。
x=-14.0 になる。

(注意:Math.round(負数) の場合には特に注意)
x=-14.0 になる。

x=-13.0 になる(-14.0 にはならない!)。

x=-13.0 になる。


x1=13 になる。
x1=-13 になる。
2006.12.30
■算術演算(商、余り、大きい方、小さい方、絶対値、べき乗、平方根、指数、対数)   このページのトップへ 説明更新日
Javaアプレット (例)
int a=7;
int b=3;
int x;
x=a/b; // aをbで割ったを求める。
x=a%b; // aをbで割ったときの余りを求める。
x=Math.max(a, b); // aとbの値のうち大きい方の値を求める。
x=Math.min(a, b); // aとbの値のうち小さい方の値を求める。
x=Math.abs(b-a); // 絶対値を求める。

double c=3.0;
double d=4.0;
double y;
y=Math.pow(c,d); // cのd乗を求める。
y=Math.sqrt(c); // cの平方根を求める。
y=Math.exp(c); // 自然対数の底eのc乗を求める。
y=Math.log(c); // cの自然対数値を求める。





x=2 になる。
x=1 になる。
x=7 になる。
x=3 になる。
x=4 になる。




y=81.0 になる。
y=1.7320508075688772 になる。
y=20.085536923187668 になる。
y=1.0986122886681096 になる。

○ /, %, Math.max, Math.min, Math.abs は long, float, double 型に対しても同様である。


2006.12.30
■乱数を発生   このページのトップへ 説明更新日
Javaアプレット Math.random()

(例)
1,2,3,4,5 内で乱数を得るには
int x=1+(int)(Math.random()*5);





Math.random() は、0以上1未満のランダムな小数値を返すので、それを 5倍し (int) で小数点以下を切り捨てて整数にすると、0から4までの乱数を得る。それに1を加える。

2006.12.30
■for文   このページのトップへ 説明更新日
Javaアプレット (例)
for(int i=0; i<=5; i++)
{

}



○変数 i は宣言しておかなくてはならない。

2006.12.30
■switch文   このページのトップへ 説明更新日
Javaアプレット

switch()
{
	case 0: …; break;
	case 1: …; break;
	・
	・
	・
	default: …;
}

(例)
String weeks[]=["日", "月", "火", "水", "木", "金", "土"];
Calendar calendar = new GregorianCalendar();
int wday=calendar.get(Calendar.DAY_OF_WEEK)-1; // 曜日の取得
switch(wday)
{
    case 0:
            g.drawString("今日は日曜日で休みです。", 10, 20);
            break;
    case 6:
            g.drawString("今日は土曜日で休みです。", 10, 20);
            break;
    default:
            g.drawString("今日は"+weeks[wday]+"曜日です。", 10, 20);
}









default はどれにも当てはまらない場合の処理(省略可能)。
2006.12.30
■繰り返し(ループ)やブロックから抜け出す   このページのトップへ 説明更新日
Javaアプレット (例)
int k=0;
for(int i=0; i<=10; i++)
{
    k++;
    if(k>3) break;
}


○ for, while, do などの繰り返し処理や、 switch による分岐から抜け出す。
 なお、continue を用いると、繰り返しをそこでスキップし処理の先頭に戻る。
2006.12.30
■テキスト表示   このページのトップへ 説明(表示の結果)更新日
Javaアプレット (例)
g.setFont(new Font("Times Roman", Font.PLAIN, 14));
g.setColor(new Color(0, 0, 255));
g.drawString("こんにちは", 10, 120);

(フォント, 細字, フォントサイズ)

こんにちは ("テキスト", x座標, y座標)

○ 色指定は、g.setColor(new Color(0, 0, 255)) の代わりに、
 grf.setColor(Color.blue); あるいは
 grf.setColor(new Color(0x0000ff));
 でも同じ結果になる。

○ 太字でイタリックにするには、Font.PLAIN のところを Font.BOLD|Font.ITALIC にする。)


2006.12.30
■文字列の比較   このページのトップへ 説明更新日
Javaアプレット if("文字列0".equals("文字列1")){ }

(例)
String str0="おはよう";
if(str0.equals("おはよう"))
{
    g.drawString("str0 は、おはよう です。", 10, 120);
}
else
{
    g.drawString("str0 は、おはよう ではありません。", 10, 120);
}


文字列0 と 文字列1 が同じなら{  }。

2007.01.01
■文字列の検索   このページのトップへ 説明更新日
Javaアプレット 文字列.indexOf("検索文字", 検索開始位置);
文字列.lastIndexOf("検索文字", 検索開始位置);

(例)
int n;
String str="abcdABCDabcdABCD";

n=str.indexOf("ABC", 5);
n=str.indexOf("ABC");

n=str.lastIndexOf("ABC", 5);
n=str.lastIndexOf("ABC");
検索開始位置から後ろへ検索し、最初に出現する位置を返す。
検索開始位置から前へ検索し、最初に出現する位置を返す。





n=12 になる。
n=4 になる。 検索開始位置を省略すると、最初から検索する。

n=4 になる。
n=12 になる。 検索開始位置を省略すると、最後尾から検索する。

○ 先頭の文字が 0番目。
○ 検索して見つからなければ -1 を返す。


2006.12.30
■文字列から1文字だけを抜き出す   このページのトップへ 説明更新日
Javaアプレット 文字列.charAt(抜き出す文字の位置)

(例)
String data="ABCDEFGHI";
char text=data.charAt(4);





text には、4番目の文字 ”E” が代入される。
 ( 先頭の文字は 0番目)

2006.12.30
■文字列から何文字か抜き出す   このページのトップへ 説明更新日
Javaアプレット 文字列.substring(開始文字の位置(ここから), 最終文字の次位置(ここの前まで))

(例)
String data="ABCDEFGHI";
String text=data.substring(4, 7);





text には、4番目~6番目の ”EFG” が代入される。( 先頭の文字は 0番目)

○ 最終前文字の位置を省略すれば、最後尾までになる。


2006.12.30
■文字列を分割する(結果を配列として返す)   このページのトップへ 説明更新日
Javaアプレット 文字列.split("分割文字")

(例)
String[ ] text;
String data="今日は、晴れています。";
text=data.split("、");




○ 文字列が ”、” で分割され、結果を配列にして返す。結果として
text[0]="今日は";
text[1]="晴れています。";
になっている。


2006.12.30
■文字列の置換   このページのトップへ 説明更新日
Javaアプレット 文字列0.replace("文字列1", "文字列2");

(例)
String str="abcdABCDabcdABCD";
str=str.replace("ABC", "12");


文字列0 の中のすべての 文字列1 を 文字列2 に置き換える。


str の中のすべての ”ABC” を ”12” に置き換える。その結果
str="abcd12Dabcd12D" になる。

2006.12.30
■今日の日付を取得する   このページのトップへ 説明更新日
Javaアプレット (例)
Calendar calendar = new GregorianCalendar();
Date NowTime = new Date();
calendar.setTime(NowTime);
int year=calendar.get(Calendar.YEAR); // 年の取得
int month=calendar.get(Calendar.MONTH)+1; // 月の取得
int day=calendar.get(Calendar.DATE); // 日の取得
int wday=calendar.get(Calendar.DAY_OF_WEEK)-1; // 曜日の取得
String weeks[ ]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
g.drawString("今日は "+year+" 年 "+month+" 月 "+day+" 日 ("+weeks[wday]+") です。", 0, 0);




○ このまま使うと
今日は 2006 年 12 月 30 日 (Sat) です。
のようになる。
 なお、(アプレットでは)
import java.awt.*;
import java.util.*;
が必要(importしておくこと)。
2006.12.30
■現在の時刻を取得する   このページのトップへ 説明更新日
Javaアプレット (例)
Calendar calendar = new GregorianCalendar();
Date NowTime = new Date();
calendar.setTime(NowTime);
int hour=calendar.get(Calendar.HOUR_OF_DAY);
int min=calendar.get(Calendar.MINUTE);
int sec=calendar.get(Calendar.SECOND);
int misec=calendar.get(Calendar.MILLISECOND); // ミリ秒(必要なら)
g.drawString("現在 "+hour+" 時 "+min+" 分 "+sec+" 秒です。", 0, 0);




○ このまま使うと
現在 16 時 13 分 44 秒 です。
のようになる。
 なお、(アプレットでは)
import java.awt.*;
import java.util.*;
が必要(importしておくこと)。

2006.12.30
■数字を数値に変換   このページのトップへ 説明更新日
Javaアプレット Double.parseDouble("数字");
Integer.parseInt("数字" , 進数);

(例)
double nn;
nn=Double.parseDouble("1.23");

int n;
n=Integer.parseInt("345");
n=Integer.parseInt("11", 2);
n=Integer.parseInt("a", 16);
n=Integer.parseInt("012");

数字(文字列)を数値に変換する。
数字(文字列)を整数値に変換する。 (進数を省略すれば 10進数とみなされる。)



nn=1.23 になる。


n=345 になる。
n=3 になる。 2進数の 11 は、10進数で 3 だから。
n=10 になる。 16進数の a は、10進数で 10 だから。
n=12 になる。 最初の 0 は無視される。


○ 逆に 数値を数字(文字列)に変換するには、
Stirng str=Integer.toString(123); // str="123" になる。


2007.01.02
■数式を数値に変換(数式を与えると数値を返す)   このページのトップへ 説明更新日
Javaアプレット  Java では eval 関数が存在しないようなので、自分用に作った。 自由に使ってください。(改変自由。 動作確認、使用は自責で。)
evalMyJava("変数", "数式")

(例)
double x=0.2;
String equation="Math.sin(x)+Math.pow(x, 2)-3*x+1";
String str=evalMyJava(x, equation);

double y=0;
try
{
    y=Double.parseDouble(str);
} catch(NumberFormatException ex){}

evalMyJava(x, equation)関数は、evalMyJava.html ←をクリックして表示されるもの全部なので、そのままコピーして貼り付けて使用。この関数に対しての import は 次の2つのみでよい。
import java.applet.*
import java.awt.*


数式には、 数字、演算子(*, /, +, -)および 次の数学関数(Math)が使用できる。
Math.sin()Math.cos()Math.tan()Math.asin()Math.acos()
Math.atan()Math.log()Math.exp()Math.abs()Math.log(,)
Math.pow(,)Math.sqrt()Math.PIMath.E 





戻り値は String型 にしているので、Double.parseDouble(str) で double型にする。
y=0.6386693307950612 になる。
 (Math.sin(0.2)+Math.pow(0.2, 2)-3*0.2+1 の計算値)

2007.01.01
※ なお、自作しないでも、JavaScript にある eval 関数 を Javaで呼び出して使うやり方がある。次のようにする。

まず、import は次の3つを追加しておくこと。
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

//-------------
String equation="Math.sin(0.2)+Math.pow(0.2, 2)-3*0.2+1";
String y="";

ScriptEngineManager sem=new ScriptEngineManager(); // JavaScript の eval関数 を使用
ScriptEngine se=sem.getEngineByName("JavaScript");
try
{
    y=String.valueOf(se.eval(equation)); // y=0.6386693307950612(Math.sin(0.2)+Math.pow(0.2, 2)-3*0.2+1 の計算値を返す
                                                          // (注:y は数値ではなく 文字列(数字)にしている)
} catch (ScriptException e){}


2019.03.27
■ファイル読み込み(ファイルからデータを入力)   このページのトップへ 更新日
Javaアプレット (例)
 別ファイルとして、データを記述した datafile.txt というファイルを用意しておく。一方

String str="";
String data="";
try
{
    URL urladd=new URL( getCodeBase( ), "datafile.txt");
    BufferedReader br=new BufferedReader(new InputStreamReader(urladd.openStream( )));
    while(true)
    {
        str=br.readLine();    
// 1行ずつ読み込む
        if(str==null){break;} else {data=data+str+"\\";}  // 読み込んだものを付加。\\は改行マークとして使うために付けているだけ
    }
    br.close();
}
catch(IOException e){}
    // 例外処理


2006.12.30
■ファイル出力(データをファイルに出力)-方法1   このページのトップへ 説明更新日
Javaアプレット  アプレットでは、ファイル出力はできない。そこで、CGIとの連携で行う。種々の方法があるが、私のやり方(方法1)は次のようにする。

(例)
 出力したいデータが、整数値で その変数が int hensu の場合で述べる。

(Javaアプレットの code に付け加えるもの)
// データをCGIへ送るメソッド ( 仮に getData() という名を付けるが、これは好きに変えてよい)
public int getData()
{
    return hensu;
}

(HTML 側 に付け加えるもの)
// JavaScriptを用いる( 仮に sendData() という名を付けるが、これは好きに変えてよい)
<script language="JavaScript">
<!--
    function sendData()
    {
        document.formname.hensu.value = document.applets[0].getData();
    }
// -->
</script>

// フォーム( 仮に、データを書き込むファイル名を save.cgi とする)
<form name="formname" action="save.cgi" method="POST" onSubmit="sendData();">
    <input type="hidden" name="hensu">
    <input type="submit" value="送信">
</form>

(CGI 側( save.cgi ) で、送られてきた hensu を受け取る)(省略)






○ 出力したいデータの型によって int hensu のところを、
double hensu とか String hensu にすればよい。
2006.12.30
■ファイル出力(データをファイルに出力)-方法2   このページのトップへ 更新日
Javaアプレット  アプレットでは、ファイル出力はできない。そこで、CGIとの連携で行う。種々の方法があるが、私のやり方(方法2)は次のようにする。
String strData="この文章を送信してみます。"; // 送信するデータ
try
{
	URL url=new URL(getCodeBase(), "./Save.cgi"); // 送信先URL(相対パスで記述している)
	URLConnection urlCon=url.openConnection(); // ネットワーク接続
	urlCon.setDoOutput(true);
	urlCon.setDoInput(true);
	urlCon.setAllowUserInteraction(false);
	PrintWriter writer=new PrintWriter(urlCon.getOutputStream());
	writer.print(strData);
	writer.close();
	BufferedReader mReader=new BufferedReader(new InputStreamReader(urlCon.getInputStream()));
}
catch (Exception e){}
 これを用いて、JavaアプレットからCGI(Save.cgi とする)へデータ(strData とする)を送信し、ファイル(temp.data とする)に書き込む場合の実際例は次のようになる。

//**************************************
// Sample.java
//**************************************

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;

//--------------------------------------------------------------------
public class Sample extends Applet
{
	//----------------------------------------------------------------
	public void init()
	{
	}

	// マウス---------------------------------------------------------
	public boolean mouseDown(Event evt, int ix, int iy)
	{
		if(ix>30 && ix<150 && iy>30 && iy<60) // 送信ボタンをクリックしたとき
		{
			sendCGI();

			// (Save.cgi へ移行しない場合は、ここの部分は削除してください)*****
			try
			{
				URL newURL=new URL(getCodeBase(), "./Save.cgi"); // ここに、リンク先のURLを書く
				getAppletContext().showDocument(newURL); // リンク先へ飛ぶ
			}
			catch(MalformedURLException er){}
			//****************************************************************
		}
		return true;
	}

	// CGIにデータをPOST送信------------------------------------------
	private void sendCGI()
	{
		String strData="この文章を送信してみます。"; // 送信するデータ
		try
		{
			URL url=new URL(getCodeBase(), "./Save.cgi"); // 送信先URL(相対パスで記述している)
			URLConnection urlCon=url.openConnection(); // ネットワーク接続
			urlCon.setDoOutput(true);
			urlCon.setDoInput(true);
			urlCon.setAllowUserInteraction(false);
			PrintWriter writer=new PrintWriter(urlCon.getOutputStream());
			writer.print(strData);
			writer.close();
			BufferedReader mReader=new BufferedReader(new InputStreamReader(urlCon.getInputStream()));
		}
		catch (Exception e){}
		return;
	}

	// ペイント-------------------------------------------------------
	public void paint(Graphics g){update(g);}
	public void update(Graphics g)
	{
		Image offs=createImage(getWidth(), getHeight());
		Graphics grf=offs.getGraphics();

		grf.setColor(new Color(0xffcccc)); // 送信ボタン
		grf.fillRect(30, 30, 120, 30);
		grf.setFont(new Font("", Font.PLAIN, 14));
		grf.setColor(new Color(0x000000));
		grf.drawString("CGIへ送信", 60, 50);

		g.drawImage(offs, 0, 0, this);
	}
}
 以上である。 Save.cgi でデータを受信し、ファイルに書き込むには
read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'}); # postされたデータの読み込み
open(OUT,"+< temp.dat"); # ファイルへの書き込み
print OUT "$buffer";
close(OUT);
のようにする。(Save.cgi で受信した $buffer は直接表示されないので、temp.dat から読み込んで表示すればよい)


2009. 2.28
■図形を描く   このページのトップへ 更新日
Javaアプレット ○ 図形を描くには、次のようにする。
public void paint(Graphics g){update(g);}
public void update(Graphics g)
{
    g.setColor(new Color(0x77bb88)); // 色
    g.drawRect(10, 20, 30, 40); // 長方形
    g.fillRect(8, 20, 30, 40); // 長方形(塗りつぶす)
}

○ スクリーンオフを用いる場合には、次のようにする。
public void paint(Graphics g){update(g);}
public void update(Graphics g)
{
    Image offs=createImage(getWidth(), getHeight());
    Graphics grf=offs.getGraphics();

    grf.setColor(new Color(0x77bb88)); // 色
    grf.drawRect(10, 20, 30, 40); // 長方形
    grf.fillRect(8, 20, 30, 40); // 長方形(塗りつぶす)

    g.drawImage(offs, 0, 0, this);
}


 種々の図形を描くには、青色の記述のところを以下のようにする。(スクリーンオフを用いる場合は、g. を grf. にすること)


● 直線を描く・・・・2点 (x0,y0),(x1,y1) を結ぶ直線を描く
g.drawLine(x0, y0, x1, y1);

(例)
    g.drawLine(10,20,50,80);

                


● 長方形を描く・・・・4点 (x,y),(x,y+h),(x+w,y+h),(x+w,y) を頂点とする長方形を描く。したがって、横 w+1, 縦 h+1 の長さになる。
g.drawRect(x,y,w,h);
g.fillRect(x,y,w,h);  (塗りつぶすとき)
g.drawRoundRect(x,y,w,h,a,b);
g.fillRoundRect(x,y,w,h,a,b);  (塗りつぶすとき)

(例)
 g.drawRect(10, 20, 30, 40);                    g.fillRect(10, 20, 30, 40);

                       


 g.drawRoundRect(10, 20, 30, 40, 10, 10);            g.fillRoundRect(10, 20, 30, 40, 10, 10);
                        


● 円(楕円)を描く・・・・4点 (x,y),(x,y+h),(x+w,y+h),(x+w,y) を頂点とする長方形内に円(楕円)を描く。したがって、円(楕円)の中心は(x+w/2,y+h/2)になる。
g.drawOval(x,y,w,h);
g.fillOval(x,y,w,h);  (塗りつぶすとき)

(例)
 g.drawOval(10,20,150,130);                 g.fillOval(10,20,150,130);

               


● 円弧(扇形)を描く・・・・4点 (x,y),(x,y+h),(x+w,y+h),(x+w,y) を頂点とする長方形内に円弧(扇形)を描く。
g.drawArc(x,y,w,h);
g.fillArc(x,y,w,h);  (塗りつぶすとき)

(例)
 g.drawArc(10,20,150,130,30,80);              g.fillArc(10,20,150,130,30,80);

               


● 多角形を描く・・・・点 (x0,y0),(x1,y1), …,(xn,yn) を頂点とする多角形を描く。
int[ ] x={x0,x1,…,xn};
int[ ] y={y0,y1,…,yn};
g.drawPolygon(x,y,n);

g.fillPolygon(x,y,n);  (塗りつぶすとき)

(例)
 int[ ] x={10,30,70};                          int[ ] x={10,30,70};
 int[ ] y={20,50,35};                          int[ ] y={20,50,35};
 g.drawPolygon(x,y,3);                         g.fillPolygon(x,y,3);

              



2005.01.06
■図形を描く(Graphics2D)   このページのトップへ 更新日
Javaアプレット ○ Graphics2D を用いると、きれいな図形が描ける。 また、平行移動、回転、拡大縮小も容易にできる。

 スクリーンオフを用いる場合で記述する。
import java.awt.geom.*;
import java.awt.image.BufferedImage;
が必要(インポート)。

public void paint(Graphics g){update(g);}
public void update(Graphics g)
{
    Graphics2D g2D=(Graphics2D)g;
    BufferedImage readImage=new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_BGR);
    Graphics2D offs=readImage.createGraphics();
    offs.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); // アンチェリアス

    offs.setStroke(new BasicStroke(3.0f)); // 線の太さ
    offs.setPaint(Color.red); // 線の色
    offs.draw(new Line2D.Double(30, 10, 180, 140)); // 直線(座標は int型 でも double型でもよい)

    g2D.drawImage(readImage, 0, 0, this);
}

 種々の図形を描いたり、平行移動、回転、拡大縮小するには、青色の記述のところを以下のようにする。


● 直線を描く・・・・2点 (x0,y0),(x1,y1) を結ぶ直線を描く
(例)
offs.setStroke(new BasicStroke(3.0f)); // 線の太さ
offs.setPaint(Color.red); // 線の色
offs.draw(new Line2D.Double(30, 10, 180, 140)); // 直線(座標は int型 でも double型でもよい)


● 長方形を描く
(例)
offs.setStroke(new BasicStroke(2.5f)); // 線の太さ
offs.setPaint(new Color(0xff0000)); // 線の色
offs.fill(new Rectangle2D.Double(260, 20, 120, 50)); // 長方形
offs.draw(new RoundRectangle2D.Double(260, 120, 120, 50, 10, 10)); // 角丸長方形


● 円(楕円)を描く・・・・4点 (x,y),(x,y+h),(x+w,y+h),(x+w,y) を頂点とする長方形内に円(楕円)を描く。したがって、円(楕円)の中心は(x+w/2,y+h/2)になる。
(例)
offs.setStroke(new BasicStroke(2.0f)); // 線の太さ
offs.setPaint(Color.blue); // 線の色
offs.draw(new Ellipse2D.Double(230, 30, 120, 120)); // 円
offs.fill(new Ellipse2D.Double(430, 30, 120, 120)); // 円(塗りつぶし)
offs.draw(new Ellipse2D.Double(260, 70, 220, 50)); // 楕円
offs.fill(new Ellipse2D.Double(460, 70, 220, 50)); // 楕円(塗りつぶし)


● 円弧(扇形)を描く・・・・4点 (x,y),(x,y+h),(x+w,y+h),(x+w,y) を頂点とする長方形内に円弧(扇形)を描く。
(例)
offs.setStroke(new BasicStroke(1.0f)); // 線の太さ
offs.setPaint(new Color(255,0,0)); // 線の色
offs.fill(new Arc2D.Double(30, 150, 110, 110, 330, 100, Arc2D.PIE)); // 円弧

○ 円弧の線の閉じ方として次の3つのスタイルがある。Arc2D.PIE, Arc2D.CHORD, Arc2D.OPEN


● 2次元ベジエ曲線を描く
(例)
offs.draw(new QuadCurve2D.Double(160.0d, 120.0d, 140.0d, 240.0d, 320.0d, 220.0d));
offs.fill(new QuadCurve2D.Double(180.0d, 160.0d, 350.0d, 150.0d, 250.0d, 260.0d));


● 多角形を描く・・・・点 (x0,y0),(x1,y1), …,(xn,yn) を頂点とする多角形を描く。
(例)
offs.setStroke(new BasicStroke(2.0f)); // 線の太さ
offs.setPaint(new Color(255,0,255)); // 線の色
int[] xpoints1={340, 450, 230};
int[] ypoints1={280, 300, 360};
offs.draw(new Polygon(xpoints1, ypoints1, 3));


● 平行移動
(例)
offs.setStroke(new BasicStroke(2.0f)); // 線の太さ
offs.setPaint(new Color(255,0,255)); // 線の色
AffineTransform af=new AffineTransform(); // 平行移動
af.setToTranslation(150d, 50d); // 平行移動する数値
offs.setTransform(af);
offs.draw(new Rectangle2D.Double(100, 500, 60, 40));


● 回転
(例)
offs.setStroke(new BasicStroke(2.0f)); // 線の太さ
offs.setPaint(new Color(0,0,255)); // 線の色
AffineTransform af1=new AffineTransform();
af1.setToRotation(3*Math.PI/180);
offs.setTransform(af1);
offs.draw(new Rectangle2D.Double(100, 500, 60, 40));

(例)
offs.setStroke(new BasicStroke(2.0f)); // 線の太さ
offs.setPaint(new Color(0,0,255)); // 線の色
offs.draw(new Rectangle2D.Double(100, 200, 60, 40));
AffineTransform af2=new AffineTransform(); // 回転
af2.setToRotation(45 * Math.PI/180, 130d, 220d); // (回転角,回転中心x座標,回転中心y座標)
offs.setTransform(af2);
offs.setPaint(new Color(255,255,0)); // 線の色
offs.draw(new Rectangle2D.Double(100, 200, 60, 40));


● 拡大、縮小
(例)
offs.setStroke(new BasicStroke(1.0f)); // 線の太さ
offs.setPaint(Color.red); // 線の色
offs.draw(new Rectangle2D.Double(100, 200, 60, 80));
AffineTransform af4=new AffineTransform();
af4.setToScale(2.0d, 2.0d);
offs.setTransform(af4);
offs.draw(new Rectangle2D.Double(100, 200, 60, 80));


 なお、Graphics2D で、文字を表示するには、次のようにする。
● 文字の表示
(例)
offs.setPaint(new Color(255,255,0)); // 文字の色
offs.setFont(new Font("Arial", Font.PLAIN, 16)); // フォント
offs.drawString("Hello Java2D", 830, 40);
offs.setFont(new Font("MS 明朝", Font.BOLD, 32)); // フォント
offs.drawString("こんにちは", 830, 80);



2008.11.30
■ボタンを設置する   このページのトップへ 更新日
Javaアプレット

この箇所はJavaで作成しています。


このアプレットのcodeは次のものです。

//**************************************
// button:ボタン(Java アプレット)
//**************************************

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

//================================================
public class button extends Applet implements ActionListener
{
	Button botanR; // ボタンを用意
	Button botanG;
	Button botanB;

	//----------------------
	public void init()
	{
		botanR=new Button("背景を赤にする");
		add(botanR);
		botanR.addActionListener(this);

		botanG=new Button("背景を緑にする");
		add(botanG);
		botanG.addActionListener(this);

		botanB=new Button("背景を青にする");
		add(botanB);
		botanB.addActionListener(this);
	}

	//--------------------
	public void actionPerformed(ActionEvent ae)
	{
		if(ae.getSource()==botanR) // 背景を赤にする
		{
			setBackground(Color.red);
		}

		if(ae.getSource()==botanG) // 背景を緑にする
		{
			setBackground(Color.green);
		}

		if(ae.getSource()==botanB) // 背景を青にする
		{
			setBackground(Color.blue);
		}
	}

	//--------------------
	public void paint(Graphics g)
	{
		update(g);
	}

	//--------------------
	public void update(Graphics g)
	{
		botanR.setForeground(Color.white); // ボタンの文字色を白にする
		botanR.setBackground(Color.red); // ボタンの色を赤にする
		botanR.setBounds(30, 20, 100, 25); // ボタンの位置と大きさ(x座標,y座標,幅,高さ)

		botanG.setForeground(Color.white); // ボタンの文字色を白にする
		botanG.setBackground(Color.green); // ボタンの色を緑にする
		botanG.setBounds(140, 20, 100, 25); // ボタンの位置と大きさ(x座標,y座標,幅,高さ)

		botanB.setForeground(Color.white); // ボタンの文字色を白にする
		botanB.setBackground(Color.blue); // ボタンの色を青にする
		botanB.setBounds(250, 20, 100, 25); // ボタンの位置と大きさ(x座標,y座標,幅,高さ)
	}
}
2005.01.19
■スライダーを設置する   このページのトップへ 更新日
Javaアプレット

この箇所はJavaで作成しています。


このアプレットのcodeは次のものです。

//**************************************
// slider:スライダー(Java アプレット)
//**************************************

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

//============================================
public class slider extends Applet implements ChangeListener
{
	JSlider sliderR; // スライダーを用意
	JSlider sliderG;
	JSlider sliderB;

	int red=0;
	int green=0;
	int blue=0;

	//----------------------------------
	public void init()
	{
		setBackground(Color.white); // 背景色

		sliderR = new JSlider(JSlider.HORIZONTAL,0,255,0); // 水平スライダー(垂直スライダーのときは VERTICAL)
		sliderR.setPaintLabels(true); // 目盛りを\表\示する
		sliderR.setPaintTicks(true); // 目盛りの設定
		sliderR.setMajorTickSpacing(32); // 主目盛り
		sliderR.setMinorTickSpacing(8); // 副目盛り
		add(sliderR); // スライダーを表示
		sliderR.addChangeListener(this); // スライダーのイベントを登録

		sliderG = new JSlider(JSlider.HORIZONTAL,0,255,0); // 水平スライダー(垂直スライダーのときは VERTICAL)
		sliderG.setPaintLabels(true); // 目盛りを\表\示する
		sliderG.setPaintTicks(true); // 目盛りの設定
		sliderG.setMajorTickSpacing(32); // 主目盛り
		sliderG.setMinorTickSpacing(8); // 副目盛り
		add(sliderG); // スライダーを表示
		sliderG.addChangeListener(this); // スライダーのイベントを登録

		sliderB = new JSlider(JSlider.HORIZONTAL,0,255,0); // 水平スライダー(垂直スライダーのときは VERTICAL)
		sliderB.setPaintLabels(true); // 目盛りを\表\示する
		sliderB.setPaintTicks(true); // 目盛りの設定
		sliderB.setMajorTickSpacing(32); // 主目盛り
		sliderB.setMinorTickSpacing(8); // 副目盛り
		add(sliderB); // スライダーを表示
		sliderB.addChangeListener(this); // スライダーのイベントを登録
	}

	//---------------------------------
	public void stateChanged(ChangeEvent ce)
	{
		if(ce.getSource()==sliderR)
		{
			red=sliderR.getValue();
		}

		if(ce.getSource()==sliderG)
		{
			green=sliderG.getValue();
		}

		if(ce.getSource()==sliderB)
		{
			blue=sliderB.getValue();
		}
		repaint();
	}

	//----------------------------------
	public void paint(Graphics g)
	{
		update(g);
	}

	//----------------------------------
	public void update(Graphics g)
	{
		super.paint(g); // (場合によってはこの行は必要なし。スライダーが表示されないときは必要。)

		sliderR.setForeground(Color.white); // スライダーの文字色
		sliderR.setBackground(Color.red); // スライダーの色
		sliderR.setBounds(20, 20, 300, 50); // スライダーの位置と大きさ(x座標,y座標,幅,高さ)

		sliderG.setForeground(Color.white); // スライダーの文字色
		sliderG.setBackground(Color.green); // スライダーの色
		sliderG.setBounds(20, 80, 300, 50); // スライダーの位置と大きさ(x座標,y座標,幅,高さ)

		sliderB.setForeground(Color.white); // スライダーの文字色
		sliderB.setBackground(Color.blue); // スライダーの色
		sliderB.setBounds(20, 140, 300, 50); // スライダーの位置と大きさ(x座標,y座標,幅,高さ)

		g.setColor(new Color(red,green,blue));
		g.fillRect(20,220,300,150);

		g.setColor(Color.white);
		g.drawString("R="+red+" G="+green+" B="+blue, 50, 280);
	}
}
2005.01.19
■スクロールバーを設置する   このページのトップへ 更新日
Javaアプレット

この箇所はJavaで作成しています。


このアプレットのcodeは次のものです。

//*********************************************
// scrollbar:スクロールバー(Java アプレット)
//*********************************************

import java.applet.Applet;
import java.awt.*;

//========================================
public class scrollbar extends Applet
{
	Scrollbar scrollR; // スクロールバーを用意
	Scrollbar scrollG;
	Scrollbar scrollB;

	int red=0;
	int green=0;
	int blue=0;

	//----------------------------------
	public void init()
	{
		// スクロールバーの設定
		scrollR=new Scrollbar(Scrollbar.HORIZONTAL,128,1,0,255);
						// (VERTICAL または HORIZONTAL, 初期値, バーサイズ, 最小値, 最大値)
		add(scrollR);

		scrollG=new Scrollbar(Scrollbar.HORIZONTAL,128,1,0,255);
		add(scrollG);

		scrollB=new Scrollbar(Scrollbar.HORIZONTAL,128,1,0,255);
		add(scrollB);
	}

	//---------------------------------
	public boolean handleEvent(Event e)
	{
		if(e.target==scrollR)
		{
			red=scrollR.getValue();
		}

		if(e.target==scrollG)
		{
			green=scrollG.getValue();
		}

		if(e.target==scrollB)
		{
			blue=scrollB.getValue();
		}
		repaint();
		return true;
	}

	//---------------------------------
	public void paint(Graphics g)
	{
		update(g);
	}

	//---------------------------------
	public void update(Graphics g)
	{
		scrollR.setBackground(Color.red); // スクロールバーの色
		scrollR.setBounds(20, 20, 280, 20); // スクロールバーの位置と大きさ(x座標,y座標,幅,高さ)

		scrollG.setBackground(Color.green); // スクロールバーの色
		scrollG.setBounds(20, 50, 280, 20); // スクロールバーの位置と大きさ(x座標,y座標,幅,高さ)

		scrollB.setBackground(Color.blue); // スクロールバーの色
		scrollB.setBounds(20, 80, 280, 20); // スクロールバーの位置と大きさ(x座標,y座標,幅,高さ)

		g.setColor(new Color(red,green,blue));
		g.fillRect(20, 130, 280, 150);

		g.setColor(Color.white);
		g.drawString("R="+red+" G="+green+" B="+blue, 50, 200);
	}
}
2005.01.19
■スクロールリスト(リストボックス)を設置する   このページのトップへ 更新日
Javaアプレット

この箇所はJavaで作成しています。


このアプレットのcodeは次のものです。

//**************************************
// list:スクロールリスト(Java アプレット)
//**************************************

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

//============================================
public class list extends Applet implements ItemListener
{
	List list; // リストを用意
	int Num=0;
	String Name="";

	//----------------------------------
	public void init()
	{
		list=new List(3,false); // (項目数, 複数選択かどうか) 
			// 項目数は、一度に表示される項目数(ただし、自分でボックスサイズを指定した場合は関係しない)
			// false:1項目のみ選択可能  true:複数選択可能)
		list.add("項目0");
		list.add("項目1");
		list.add("項目2");
		list.add("項目3");
		list.add("項目4");
		this.add(list);
		list.addItemListener(this);
	}

	//----------------------------------
	public void itemStateChanged(ItemEvent e)
	{
		if(e.getSource()==list)
		{
			Num=list.getSelectedIndex(); // 選択番号(何番目を選択したかを取得する)
			Name=list.getSelectedItem(); // 選択項目(どの項目を選択したかを取得する)
			repaint();
		}
		return;
	}

	//----------------------------------
	public void paint(Graphics g)
	{
		update(g);
	}

	//----------------------------------
	public void update(Graphics g)
	{
		g.setColor(new Color(255, 255, 200)); // 背景色
		g.fillRect(0, 0, 250, 120);

		g.setColor(Color.black);
		g.drawString("選択してください", 10, 20);
		list.setBackground(new Color(70, 100, 50)); // リストボックスの色
		list.setForeground(new Color(160, 220, 160)); // 項目名の文字色
		list.setFont(new Font("TimesRoman",Font.PLAIN,12)); // 項目名のフォント
		list.setBounds(20, 30, 80, 60); // リストボックスの位置と大きさ(x座標,y座標,幅,高さ)

		g.setColor(Color.black);
		g.drawString("選択番号="+Num, 130, 40);
		g.drawString("選択項目="+Name, 130, 60);
	}
}
2005.05.19
■チョイスを設置する   このページのトップへ 更新日
Javaアプレット

この箇所はJavaで作成しています。


このアプレットのcodeは次のものです。

//**************************************
// choice:チョイス(Java アプレット)
//**************************************

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

//============================================
public class choice extends Applet implements ItemListener
{
	Choice choice; // チョイスを用意

	int Num=0;
	String Name="";

	//----------------------------------
	public void init()
	{
		choice=new Choice();
		this.add(choice);
		choice.addItem("項目0");
		choice.addItem("項目1");
		choice.addItem("項目2");
		choice.addItem("項目3");
		choice.addItem("項目4");
		choice.addItemListener(this);
	}

	//----------------------------------
	public void itemStateChanged(ItemEvent e)
	{
		if(e.getSource()==choice)
		{
			Num=choice.getSelectedIndex(); // 選択番号(何番目を選択したかを取得する)
			Name=choice.getSelectedItem(); // 選択項目(どの項目を選択したかを取得する)
			repaint();
		}
		return;
	}

	//----------------------------------
	public void paint(Graphics g)
	{
		update(g);
	}

	//----------------------------------
	public void update(Graphics g)
	{
		g.setColor(new Color(255,200,200)); // 背景色
		g.fillRect(0,0,300,120);

		g.setColor(Color.black);
		g.drawString("選択してください",10,20);
		choice.setBackground(new Color(255,100,100)); // チョイスの色
		choice.setForeground(new Color(0,0,200)); // 項目名の文字色

		g.setColor(Color.black);
		g.drawString("選択番号="+Num,50,60);
		g.drawString("選択項目="+Name,50,80);
	}
}
2005.05.19
■チェックボックスを設置する   このページのトップへ 更新日
Javaアプレット

この箇所はJavaで作成しています。


このアプレットのcodeは次のものです。

//**************************************
// checkbox:チェックボックス(Java アプレット)
//**************************************

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

//============================================
public class checkbox extends Applet implements ItemListener
{
	Checkbox chbox1; // チェックボックスを用意
	Checkbox chbox2; // チェックボックスを用意
	Checkbox chbox3; // チェックボックスを用意

	String mess1="";
	String mess2="";
	String mess3="";

	//----------------------------------
	public void init()
	{
		chbox1=new Checkbox("項目1");
		chbox2=new Checkbox("項目2");
		chbox3=new Checkbox("項目3");
		this.add(chbox1);
		this.add(chbox2);
		this.add(chbox3);
		chbox1.addItemListener(this);
		chbox2.addItemListener(this);
		chbox3.addItemListener(this);
	}

	//----------------------------------
	public void itemStateChanged(ItemEvent e)
	{
		if(e.getSource()==chbox1)
		{
			boolean ch1=chbox1.getState(); // チェックの有無を取得する
			if(ch1){mess1="項目1を選択";} else {mess1="";}
			repaint();
			return;
		}

		if(e.getSource()==chbox2)
		{
			boolean ch2=chbox2.getState(); // チェックの有無を取得する
			if(ch2){mess2="項目2を選択";} else {mess2="";}
			repaint();
			return;
		}

		if(e.getSource()==chbox3)
		{
			boolean ch3=chbox3.getState(); // チェックの有無を取得する
			if(ch3){mess3="項目3を選択";} else {mess3="";}
			repaint();
			return;
		}
	}

	//----------------------------------
	public void paint(Graphics g)
	{
		update(g);
	}

	//----------------------------------
	public void update(Graphics g)
	{
		g.setColor(new Color(200, 255, 255)); // 背景色
		g.fillRect(0, 0, 250, 200);

		g.setColor(Color.black);
		g.drawString("チェックを入れてください", 10, 30);

		chbox1.setForeground(Color.blue); // チェックボックスの文字色
		chbox1.setBackground(Color.red); // チェックボックスの色
		chbox1.setBounds(20, 40, 60, 20); // チェックボックスの位置と大きさ(x座標,y座標,幅,高さ)

		chbox2.setForeground(Color.black); // チェックボックスの文字色
		chbox2.setBackground(Color.green); // チェックボックスの色
		chbox2.setBounds(20, 60, 60, 20); // チェックボックスの位置と大きさ(x座標,y座標,幅,高さ)

		chbox3.setForeground(Color.white); // チェックボックスの文字色
		chbox3.setBackground(Color.blue); // チェックボックスの色
		chbox3.setBounds(20, 80, 60, 20); // チェックボックスの位置と大きさ(x座標,y座標,幅,高さ)

		g.setColor(Color.black);
		g.drawString(""+mess1, 130, 55);
		g.drawString(""+mess2, 130, 75);
		g.drawString(""+mess3, 130, 95);
	}
}
2005.05.19
■テキストフィールドを設置する   このページのトップへ 更新日
Javaアプレット

この箇所はJavaで作成しています。


このアプレットのcodeは次のものです。

//**************************************
// textField:テキストフィールド(Java アプレット)
//**************************************

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

//================================================
public class textField extends Applet implements ActionListener
{
	TextField fieldA; // テキストフィールドを用意
	TextField fieldB;

	String textA="A";
	String textB="B";

	//----------------------
	public void init()
	{
		fieldA=new TextField("おはよう"); // デフォルト文字
		add(fieldA);
		fieldA.addActionListener(this);

		fieldB=new TextField("こんばんは"); // デフォルト文字
		add(fieldB);
		fieldB.addActionListener(this);
	}

	//--------------------
	public void actionPerformed(ActionEvent ae)
	{
		textA=fieldA.getText(); // テキストフィールドA に入力された文字を取得する
		textB=fieldB.getText(); // テキストフィールドA に入力された文字を取得する

		fieldB.setText(textA); // テキストフィールドA で取得したものを テキストフィールドB 内に表示してみる
		fieldA.setText("こんにちは"); // テキストフィールドA 内 を新たな文字に変える
		repaint();
	}

	//--------------------
	public void paint(Graphics g)
	{
		update(g);
	}

	//--------------------
	public void update(Graphics g)
	{
		fieldA.setFont(new Font("TimesRoman",Font.PLAIN,12)); // テキストフィールドA のフォント
		fieldA.setForeground(Color.black); // テキストフィールドA の文字色を黒にする
		fieldA.setBackground(Color.yellow); // テキストフィールドA の色を黄にする
		fieldA.setBounds(30, 20, 200, 25); // テキストフィールドA の位置と大きさ(x座標,y座標,幅,高さ)

		fieldB.setFont(new Font("TimesRoman",Font.PLAIN,12)); // テキストフィールドB のフォント
		fieldB.setForeground(Color.red); // テキストフィールドB の文字色を赤にする
		fieldB.setBackground(Color.blue); // テキストフィールドB の色を青にする
		fieldB.setBounds(30, 50, 200, 25); // テキストフィールドB の位置と大きさ(x座標,y座標,幅,高さ)
	}
}
 (注)TextField は、1行入力に限定。 複数行にわたるテキスト入力には、次の TextArea を用いる。

2005.11.16
■テキストエリアを設置する   このページのトップへ 更新日
Javaアプレット

この箇所はJavaで作成しています。


このアプレットのcodeは次のものです。

//**************************************
// textArea:テキストエリア(Java アプレット)
//**************************************

import java.applet.*;
import java.awt.*;

//================================================
public class textArea extends Applet
{
	TextArea area; // テキストエリアを用意

	String text="A";

	//----------------------
	public void init()
	{
		area=new TextArea("おはよう"); // デフォルト文字
		add(area);
	}

	//--------------------
	public void paint(Graphics g)
	{
		update(g);
	}

	//--------------------
	public void update(Graphics g)
	{
		area.setFont(new Font("TimesRoman",Font.PLAIN,12)); // テキストエリア のフォント
		area.setForeground(Color.black); // テキストフエリア の文字色を黒にする
		area.setBackground(Color.yellow); // テキストエリア の色を黄にする
		area.setBounds(30, 20, 200, 100); // テキストエリア の位置と大きさ(x座標,y座標,幅,高さ)

		text=area.getText(); // テキストエリア に入力された文字を取得する
		g.drawString(""+text, 30, 150);
	}
}
 (注)1行入力に限定する場合は 上の TextField の方を用いる。

2005.11.16
■マウスイベント(マウスに反応させる)   このページのトップへ 更新日
Javaアプレット  次の4つの方法がある。
(1) マウスをクリック、アプレット上に入る、アプレットから出る、マウスボタンを押す、マウスボタンを離すときに反応させるには、MouseListenerを使う。
(2) マウスを動かす、マススをドラッグするときに反応させるには、MouseMotionListenerを使う。
(3) (1)(2)の場合で記述を簡単にするため、アダプタMouseAdapterを使う方法。
(4) (1)(2)の場合をboolean型でやる方法(これが一番簡単)。

 以下これらを順次説明する。

(1)の方法
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
//-----------------------
public class sample extends Applet implements MouseListener // MouseListenerインターフェイスを実装する
{
	…
	public void init()
	{
		addMouseListener(this); // イベントを受け取る準備をする
		…
	}
	public void mouseClicked(MouseEvent me) // マウスをクリックされたとき
	{
		…(処理を記述する)
	}
	public void mouseEntered(MouseEvent me) // マウスポインタがアプレットに入ったとき
	{
		…
	}
	public void mouseExited(MouseEvent me) // マウスポインタがアプレットから出たとき
	{
		…
	}
	public void mousePressed(MouseEvent me) // マウスボタンが押されたとき
	{
		…
	}
	public void mouseReleased(MouseEvent me) // マウスボタンが離されたとき
	{
		…
	}
}
(上の5つのメソッドは、1つしか使わなくてもすべて定義しておかなくてはならない。これが面倒ならば、(3)で説明する アダプタ と呼ばれるクラスを使って簡単にする方法がある)
例えば、マウスをクリックしたとき、クリックした位置を取得するには
	public void mouseClicked(MouseEvent me) // マウスをクリックしたとき
	{
		int x;
		int y;
		x=me.getX();
		y=me.getY();
	}
とする。


(2)の方法
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
//-----------------------
public class sample extends Applet implements MouseMotionListener // MouseMotionListenerインターフェイスを実装する
{
	…
	public void init()
	{
		addMouseMotionListener(this); // イベントを受け取る準備をする
		…
	}
	public void mouseMoved(MouseEvent me) // マウスが移動したとき
	{
		…
	}
	public void mouseDragged(MouseEvent me) // マウスがドラッグされたとき
	{
		…
	}
}
(上の2つのメソッドは、1つしか使わなくてもすべて定義しておかなくてはならない。これが面倒ならば、(3)で説明する アダプタ と呼ばれるクラスを使って簡単にする方法がある)


(3)の方法 … (1)の場合を簡単に記述する方法 で説明するが、(2)の場合も同様である。
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
//-----------------------
public class sample extends Applet
{
	…
	public void init()
	{
		…
		addMouseListener(new MouseAdapter()
		{
			public void mouseClicked(MouseEvent me) // マウスをクリックしたとき
			{
				…
			}
		});
	}
	…
}
(この場合は使わないメソッドは定義しておかなくてもよい)


(4)の方法
import java.applet.Applet;
import java.awt.*;
//-----------------------
public class sample extends Applet
{
	…
	public boolean mouseDown(Event evt, int x, int y) // マウスボタンが押されたとき
	{
		…
		return true;
	}
	public boolean mouseDrag(Event evt, int x, int y) // マウスがドラッグされたとき
	{
		…
		return true;
	}
}
 x, y でマウスの位置が取得されているので便利。
 次の6つのメソッドが用意されている。使わないメソッドは定義しておかなくてもよい。
mouseEnter(Event evt, int x, int y) // マウスポインタがアプッレトに入ったとき
mouseExit(Event evt, int x, int y) // マウスポインタがアプッレトから出たとき
mouseDown(Event evt, int x, int y) // マウスボタンが押されたとき
mouseUp(Event evt, int x, int y) // マウスボタンが離されたとき
mouseDrag(Event evt, int x, int y) // マウスがドラッグされたとき
mouseMove(Event evt, int x, int y) // マウスが移動したとき

2005.02.27
■キーイベント(キーに反応させる)   このページのトップへ 更新日
Javaアプレット  キーに反応させるには、ボタンも設置し次のようにする。

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
//----------------------------
public class sample extends Applet implements KeyListener, ActionListener
{
	Button botan; // ボタン
	int keyNum;

	//-----------------------
	public void init()
	{
		botan=new Button("キー入力できない時押す");
		add(botan);
		botan.addActionListener(this);
		botan.addKeyListener(this);
		requestFocus();
	}

	//----------------
	public void actionPerformed(ActionEvent ae)
	{
		if(ae.getSource()==botan)
		{
			return;
		}
	}

	//---------------
	public void keyTyped(KeyEvent ke){}
	public void keyReleased(KeyEvent ke){}
	public void keyPressed(KeyEvent ke) // キーを押しているときに呼び出される
	{
		keyNum=ke.getKeyCode(); // 押したキーのキーコードナンバーを取得する
		repaint();
		return;
	}

	//----------------------------------
	public void paint(Graphics g)
	{
		update(g);
	}

	//----------------------------------
	public void update(Graphics g)
	{
		botan.setForeground(Color.black); // ボタンの文字色を黒にする
		botan.setBackground(Color.white); // ボタンの色を白にする
		botan.setBounds(30, 20, 150, 25); // ボタンの位置と大きさ(x座標,y座標,幅,高さ)

		g.setColor(new Color(0xffff00));
		g.fillRect(30, 70, 150, 40);
		g.setFont(new Font("TimesRoman", Font.PLAIN, 16));
		g.setColor(new Color(0x0000ff));
		g.drawString("keyNum="+keyNum, 40, 90);
	}
}
 以上である。



2009.01.01
■リンクのURLに飛ぶ、リンクのURLを別画面で表示   このページのトップへ 更新日
Javaアプレット  アプレット内で別のURLをリンクし、マウスでクリックしたとき、そのURLへ飛ぶには、次のようにする。
try
{
	URL newURL=new URL("http://yokatoki.sakura.ne.jp"); // リンク先のURL
	getAppletContext().showDocument(newURL); // リンク先へ飛ぶ
}
catch(MalformedURLException er){}
(実際例)
//****************************
// リンクのURLに飛ぶ
//****************************

import java.applet.*;
import java.awt.*;
import java.net.*;

//----------------------------------------------------------
public class sample extends Applet
{
	//--------------------------------------------
	public void init()
	{
	}

	// マウス-------------------------------------
	public boolean mouseDown(Event evt, int ix, int iy)
	{
		if(ix>50 && ix<230 && iy>20 && iy<40)
		{
			try
			{
				URL newURL=new URL("http://yokahi.sakura.ne.jp"); // ここに、リンク先のURLを書く
				getAppletContext().showDocument(newURL); // リンク先へ飛ぶ
			}
			catch(MalformedURLException er){}
		}
		return true;
	}

	// ペイント-----------------------------------
	public void paint(Graphics g){update(g);}
	public void update(Graphics g)
	{
		g.setColor(Color.cyan);
		g.fillRect(50, 20, 180, 20);
		g.setColor(Color.red);
		g.setFont(new Font("", Font.PLAIN, 14));
		g.drawString("よかひよかときホームへ", 55, 35);
	}
}
 以上である。
 (注) なぜか appletviewer では作動しない。コンパイルした後 アプレットを記述した html を起動すれば作動する。

○ 別画面で表示させるには、URL newURL=new URL("http://yokahi.sakura.ne.jp"); のところに、"_blank" を付けて、
  URL newURL=new URL("http://yokahi.sakura.ne.jp", "_blank");
のようにする。
○ ボタンを作って、ボタンをクリックしたとき飛ぶようにするには、ボタン動作の部分に赤記述の部分を同様に使用すればよい。




2009.02.24

このページのトップへ

**********************************************************************************
Copyright(C) 2006-,YokahiYokatoki