質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Javaアプレット

Javaアプレットは、Webページに組み込まれて実行されるJavaアプリケーションの形式です。Java SE 11で廃止となりました。

Q&A

解決済

2回答

408閲覧

java mousecliked クリック前に表示されてしまう

banana777madao

総合スコア15

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Javaアプレット

Javaアプレットは、Webページに組み込まれて実行されるJavaアプリケーションの形式です。Java SE 11で廃止となりました。

0グッド

0クリップ

投稿2019/08/21 06:52

編集2019/08/21 07:04

前提・実現したいこと

クリックをすることで格子内を赤くぬりつぶしたいです。
ただ、クリックする前(=画面を一番最初に表示する際)は赤いブロックはない状態にしたいのですが表示されてしまいます…

※アプレットは現在廃止されている機能ですが、現在所属している団体での学習に使用しています。(教材未更新のため)

発生している問題・エラーメッセージ

クリック前に赤いブロックが表示されてしまう。

該当のソースコード

java

1package study.tetris; 2 3import java.applet.Applet; 4import java.awt.BasicStroke; 5import java.awt.Color; 6import java.awt.Graphics; 7import java.awt.Graphics2D; 8import java.awt.event.MouseEvent; 9import java.awt.event.MouseListener; 10 11public class step7 extends Applet implements MouseListener{ 12 public void paint(Graphics g) { 13 g.setColor(Color.black);//黒色 14 15 Graphics2D g2 =(Graphics2D)g;//太線 16 BasicStroke bs = new BasicStroke(5); 17 g2.setStroke(bs); 18 19 for(int x=0;x<22;x++) { 20 for(int y=0;y<13;y++) { 21 g.drawLine(0, x*30, 30*12, x*30);//方眼縦 22 g.drawLine(y*30, 0, y*30, 30*21);//方眼横 23 } 24 } 25 g.setColor(Color.red);//クリック赤 26 g.fillRect(a+1, b+1, 27, 27);//塗りつぶし 27 } 28 29 public void init() { 30 addMouseListener(this);//イベント起動 31 } 32 int a = -1; 33 int b = -1; 34 public void mouseClicked(MouseEvent e){ 35 java.awt.Point point = e.getPoint();//マウスクリックイベント 36 a = (point.x/30)*30; 37 b = (point.y/30)*30; 38 repaint(); 39 } 40 41 public void mousePressed(MouseEvent e) { 42 } 43 public void mouseReleased(MouseEvent e) { 44 } 45 public void mouseEntered(MouseEvent e) { 46 } 47 public void mouseExited(MouseEvent e) { 48 } 49} 50

試したこと

変数a,bの初期値に注目して考えましたがいまいち解決には繋がりませんでした。
どなたかお力添えをお願いいたします。

補足情報(FW/ツールのバージョンなど)

java1.8.0
Eclipse_2019-06

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/08/21 06:54

Javaアプレットは非推奨のち削除された機能ですが、今それを学習しているのはどういう背景からでしょうか
banana777madao

2019/08/21 06:57

現在所属している団体での学習内容で使用しています。 アプレット廃止後も教材の更新がされていないようです…
m.ts10806

2019/08/21 07:02 編集

一応、質問本文に前提として追記しておいてください。 ※ただ廃止されている機能ゆえ、積極回答はのぞめないかもしれません
banana777madao

2019/08/21 07:05

ご依頼ありがとうございます。前提として追加しました。
guest

回答2

0

ベストアンサー

マウスクリックしていない場合でも、g.fillRect() で、0,0,27,27の範囲を赤で塗りつぶしてるからです。

Java

1 public void paint(Graphics g) { 2/* ...略... */ 3 g.setColor(Color.red);//クリック赤 4 g.fillRect(a+1, b+1, 27, 27);//塗りつぶし 5 } 6 7 int a = -1; 8 int b = -1;

以下のように何らかの判定を行い塗りつぶしてください。

if (a > -1 || b > -1 /* いい条件を考えてください。 */) { g.setColor(Color.red);//クリック赤 g.fillRect(a+1, b+1, 27, 27);//塗りつぶし }

投稿2019/08/21 07:17

Y.H.

総合スコア7914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

banana777madao

2019/08/22 01:28

Y.H.さんへ 質問への回答、ありがとうございます。 おかげさまで赤いブロックを表示させずに起動することができました…!
guest

0

if構文を追記

java

1package tetris; 2 3import java.applet.Applet; 4import java.awt.BasicStroke; 5import java.awt.Color; 6import java.awt.Graphics; 7import java.awt.Graphics2D; 8import java.awt.event.MouseEvent; 9import java.awt.event.MouseListener; 10 11public class Step2 extends Applet implements MouseListener{ 12 public void paint(Graphics g) { 13 g.setColor(Color.black);//黒色 14 15 Graphics2D g2 =(Graphics2D)g;//太線 16 BasicStroke bs = new BasicStroke(5); 17 g2.setStroke(bs); 18 19 for(int x=0;x<22;x++) { 20 for(int y=0;y<13;y++) { 21 g.drawLine(0, x*30, 30*12, x*30);//方眼縦 22 g.drawLine(y*30, 0, y*30, 30*21);//方眼横 23 } 24 } 25 if(a > -1|| b > -1 ) { 26 c=27; 27 d=27; 28 } 29 else { 30 c=0; 31 d=0; 32 } 33 g.setColor(Color.red);//クリック赤 34 g.fillRect(a+1, b+1, c, d);//塗りつぶし 35 } 36 37 public void init() { 38 addMouseListener(this);//イベント起動 39 } 40 int a = -1; 41 int b = -1; 42 int c = 27; 43 int d = 27; 44 public void mouseClicked(MouseEvent e){ 45 java.awt.Point point = e.getPoint();//マウスクリックイベント 46 a = (point.x/30)*30; 47 b = (point.y/30)*30; 48 repaint(); 49 } 50 51 public void mousePressed(MouseEvent e) { 52 } 53 public void mouseReleased(MouseEvent e) { 54 } 55 public void mouseEntered(MouseEvent e) { 56 } 57 public void mouseExited(MouseEvent e) { 58 } 59} 60

投稿2019/08/22 01:29

banana777madao

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問