Javaプログラミング基礎 演習問題 (基礎クラス向け)

解答は

に提出しなさい。ソースファイル (〜.java) のみを提出。 提出は gFTP 等の ftp ソフトを用いて行うこと。

問題1 (Beginners')

マウスで指定した場所に長方形を描くことができる簡単なドローツールを作成しなさい。

マウスを使い、 ウィンドウ内で長方形の左上と右下の位置を指定すると 長方形が表示されるようにすること。 マウスで2か所の位置を指定するやり方は各自決めて良い。 例えば、マウスのボタンを押した場所と離した場所で指定する方法が 比較的プログラムが簡単で良い。 1回目のクリックと2回目のクリックで2つの点を指定する方法も考えられる。

mainメソッドを用意するクラス名は SimpleDrawTool とする。 (提出ファイル名: SimpleDrawTool.java)

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

public class SimpleDrawTool {
    public static void main(String[] args) {
	JFrame frame = new JFrame();

	frame.setTitle("Simple Draw Tool");
	frame.setSize(640, 480);
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	MyPanel panel = new MyPanel();
	frame.getContentPane().add(panel);

	frame.setVisible(true);
    }
}

class MyPanel extends JPanel implements MouseListener {

    (表示する長方形に関する情報を保持する変数を宣言)

    public MyPanel() {
	setBackground(Color.white);
	addMouseListener(this);
    }

    public void paintComponent(Graphics g) {
	super.paintComponent(g);

	g.setColor(Color.black);
	g.drawRect(....      )  <-- 長方形を描画
    }

    public void mouseClicked(MouseEvent e) {
	System.out.println("マウスがクリックされました");
    }
    public void mouseEntered(MouseEvent e) {
	System.out.println("マウスがパネル内に入りました");
    }
    public void mouseExited(MouseEvent e) {
	System.out.println("マウスがパネル内から出ました");
    }
    public void mousePressed(MouseEvent e) {
	System.out.println("マウスのボタンが押されました");
	
	(長方形の左上の点を記録)
    }
    public void mouseReleased(MouseEvent e) {
	System.out.println("マウスのボタンが離されました");

	(長方形の右下の点を記録)

	repaint();  <--- 新しい座標で長方形を描くため画面を書き換える
    }
}