画像ダイアログ

『ブラシ』メニューの『画像』メニュー項目を選ぶと、画像を選ぶダイアログが現れて、 そこで選んだ画像がブラシとして使えるようにします。しかしアプレットでは次のように サンプルの画像をブラシに使います。
作品ダウンロード
このように、ローカル時とアプレット時で異なる動作をさせる方法は、以前で作成した Painterクラスのインスタンス変数 flagAppletで行います。 こらがtrueのアプレットであれば"octopus.gif"のリソースをブラシに使い、 そうでないローカル起動の時は、ダイアログ(BrushDialog)で画像を選ばせます。 いずれの場合も、『円』と同じダイアログを利用することにします。
そこで、画像のURLを引数としてBrushDialogの画像を 設定するメソッドを、drawFileの名前で次のように作成します。

	//メモリイメージに、ファイル画像を描画し、それを自身とPaintPanelのブラシに指定する。
	public void drawFile(java.net.URL imgURL)
	{
		Image img = null;
		try{
			img = javax.imageio.ImageIO.read(imgURL);// ファイルからイメージを作成
		}
		catch (Exception err){
			JOptionPane.showMessageDialog(this, "ファイル読み取りに失敗しました。");
			return;
		}
		int w = img.getWidth(this);//ロードイメージのサイズ取得
		int h = img.getHeight(this);
		//		System.out.println(w +"," + h);
		bufImg = new BufferedImage(w, h, BufferedImage.TYPE_4BYTE_ABGR);//イメージ生成
		Graphics2D g2 = (Graphics2D)bufImg.getGraphics();
		g2.drawImage(img, 0, 0, this);//生成したイメージに描画
		this.paintPanel.brushImg = bufImg;//PaintPanelのブラシを変更
		this.paintPanel.setPreferredSize(new Dimension(w, h)); //適切なサイズを設定
		this.imgSize.setSize(new Dimension(w, h));
	}

あとは『画像』のメニュー項目処理でBrushDialogを生成し、上記メソッドを使って ブラシダイアログの画像を変更します。この処理を行うPainterクラスのコードを以下に示します。 ■■■■を正しく変更ください。

←正しく修正してからクリックください。

←わからない場合は、クリック