教育サーバーのページ
ソフトウエア基礎演習

GUIアプリケーション (AWT) その2 模範解答

課題 5-1

paintメソッドを以下のように変更する。

    public void paint(Graphics g) {
	g.drawLine(100,70,50,120);
	g.drawLine(100,70,150,120);
	g.drawOval(50,40,100,60);
	g.drawRect(50,120,100,50);
    }

課題 5-2

drawRectメソッドの代わりにfillRectメソッドを呼び出すようにする。

課題 5-3

ColorFrameクラス内のみ記す。

class ColorFrame extends Frame {
    public ColorFrame() {
	setSize(200, 200);
	addWindowListener(new MyWindowAdapter());
	setBackground(Color.black);
    }
    public void paint(Graphics g) {
	g.setColor(Color.blue);
	g.drawLine(50,50,150,150);
	g.drawLine(50,150,150,50);
	g.setColor(Color.pink);
	g.drawOval(50,50,100,100);
	g.setColor(Color.gray);
	g.drawRect(70,70,60,60);
    }
}

課題 5-4

ImageFrameクラス内のみ記す。

class ImageFrame extends Frame {
    Image im;
    public ImageFrame() {
	setSize(530, 300);
	addWindowListener(new MyWindowAdapter());
	Toolkit tk = Toolkit.getDefaultToolkit();
	im = tk.getImage("usb-plugs.jpg");
    }
    public void paint(Graphics g) {
	g.drawImage(im, 20, 50, this);
	g.drawImage(im, 270, 50, this);
    }
}

課題 5-5

paintメソッドのみ記す。

    public void paint(Graphics g) {
	g.drawImage(im, 20, 50, this);
	g.drawImage(im, 20+im.getWidth(this), 50, this);
    }

課題 5-6

マウスボタンを押してから、マウスを一切移動せずにマウスボタンを離した時に発生する。ただし環境によっては、わずかにマウスを移動した場合にはクリックしたと判定している場合もある。

課題 5-7

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

class MouseEventFrame extends Frame implements MouseListener, MouseMotionListener {
    public MouseEventFrame() {
	setSize(280, 300);
	addWindowListener(new MyWindowAdapter());
	addMouseListener(this);
	addMouseMotionListener(this);
    }

    public void mousePressed(MouseEvent e) {
	System.out.println("Pressed at ("+e.getX()+","+e.getY()+")");
    }
    public void mouseClicked(MouseEvent e) {
	System.out.println("Clicked at ("+e.getX()+","+e.getY()+")");
    }
    public void mouseReleased(MouseEvent e) {
	System.out.println("Released at ("+e.getX()+","+e.getY()+")");
    }
    public void mouseExited(MouseEvent e) {}
    public void mouseEntered(MouseEvent e) {}

    public void mouseMoved(MouseEvent e) {
	System.out.println("Moved at ("+e.getX()+","+e.getY()+")");
    }
    public void mouseDragged(MouseEvent e) {
	System.out.println("Draged at ("+e.getX()+","+e.getY()+")");
    }
}

class MyWindowAdapter extends WindowAdapter {
    public void windowClosing(WindowEvent e) {
	System.exit(0);
    }
}

public class MouseEventTest {
    public static void main(String[] args) {
	MouseEventFrame f = new MouseEventFrame();
	f.setVisible(true);
    }
}

課題 5-8

KeyEventFrameクラス内のみ記す。

class KeyEventFrame extends Frame implements KeyListener {
    String key="";
    public KeyEventFrame() {
	setSize(280, 300);
	addWindowListener(new MyWindowAdapter());
	addKeyListener(this);
	requestFocus();
    }
    public void paint(Graphics g) {
	g.drawString(""+ key, 20,100);
    }
    public void keyTyped(KeyEvent e) {
        System.out.println("Typed '"+e.getKeyChar()+"'");
	key = key + e.getKeyChar();
	repaint();
    }
    public void keyPressed(KeyEvent e) {}
    public void keyReleased(KeyEvent e) {}
}

ソフトウエア基礎演習


ohmi@rsch.tuis.ac.jp (2004年7月5日〜2004年7月5日)