12/7 GUI部品の組み合わせ


質問と回答

Q.
public Yukidaruma(String title){
  super(title);
  // GUI部品と,Event Listenerを関連づける
  addKeyListener(this);
  addMouseListener(this);
}
という部分がどういう役割を果たしているのかがよくわかりません。教えて下さい
A.
super(title); の部分はFrameクラスのコンストラクタを呼び出すという部分なので,それほど難しくはないと思いますが,
// GUI部品と,Event Listenerを関連づける
addKeyListener(this);
addMouseListener(this);
の部分は,わかりにくいかもしれませんね. http://lecture.ecc.u-tokyo.ac.jp/~ktanaka/programming05/primers/2-2.html のイベント駆動プログラミングの ところで説明していますが,GUI部品に対しては,そのGUI部品に対してマウスやキーボードから入力した時にそれをイ ベントとして受け取るEvent Listenerのオブジェクトを関連づけることによって,イベントを処理することができます. この関連づけをおこなうためのメソッドが,
addKeyListener - キーボードイベントの関連付け
addMouseListener - マウスイベントの関連付け
です.講義の例では,Event ListenerとしてGUI部品自身を設定しているので,引数として this(インスタンスメソッドから 自分自身のオブジェクトを参照するための変数)を渡しています.

Q.
11/16の課題を期間以内に提出したのですがコメントがなくて、ちゃんと提出できてるのか不安です。 コメントがなくてもチェックされているのでしょうか。
A.
自分の提出状況はcfiveシステムの中で確認できるので,そこで,期限内に提出したことになっていれば大丈夫です. じゃんけんの課題は,プログラムの数が多いのでチェックが遅れていて,期限内に提出してものもコメントが間に 合っていないものがかなり残っています.もうしばらくお待ちください.
Q.
雪だるま課題に関して雪だるまをマウスに従って動かせるようにとのことでしたが、mx,myをg.fillOval{~};などの{}の中にどう入れたらいい のかよくわかりません。教えてください。 と出ましたが、どこを直したらよいのですか?
A.
g.fillOvalの「{}」の中というのは,「()」の中のつもりだと思って回答します.

GraphicsクラスのメソッドfillOvalは http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/awt/Graphics.html#fillOval(int,%20int,%20int,%20int)) にあるように,

の4つの引数を持ちます.mx, myにはマウスの押されたx座標, y座標が入っているので,それを元に引数に 与える式を計算してください.

たとえば,第1引数にmx, 第2引数にmyを渡すとマウスの押された点を左上隅とするような楕円を描くこと ができますが,雪だるまのようにfillOvalを複数回呼び出して描くような図形の場合は,mxやmyに基準点との 差分を足したり引いたりした座標を指定することになるでしょう.


過去の課題について


今日の内容


今日の課題