大学の授業の課題についてなんですが、
javaアプレットを使って
「徐々に大きな四角形を表示させ、ある程度の大きさの四角形になったらまた最初に戻り、さらにボタンを表示させ、ボタンを押す度に四角形の拡大をストップ、スタートさせるプログラムを作れ。また、マウスでクリックした部分を中心に、徐々に大きな四角形を表示させるようにもするように。」
という、自分でも書いていて分からなくなりそうな内容の課題が出されまして、先生などのアドバイスを頼りに
import java.applet;
import java.awt.Graphics;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.Color;
import java.awt.Button;
public class Report1 extends Applet implements ActionListener,Runnable
{
int x = 10;
int y = 10;
Button bt;
public void init()
{
addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{
x = e.getX();
y = e.getY();
repaint();
}
});
{
bt.setLabel("pause");
}
while{
} if()
repaint();
public void paint(Graphics g)
{
g.setColor(Color, white);
g.fillRect(0, 0, 400, 400);
}
public void update(Graphics g){
paint();
何とか上のような感じにまではこぎつけたのですが、
ここからは正直どうすればいいのか検討がつかず
お手上げ状態なんです...
どなたか解答又は参考になるサイトがあれば
教えていただけないでしょうか?
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
機能を分解して一つずつ作りこんでいった方がよいでしょう。
>「徐々に大きな四角形を表示させ、
まずはjava.util.Timer か java.lang.Thread を調べましょう。
現在の四角形サイズ縦h 横w と増加幅td とを、クラスのpropatyに保持して、
timerで描画実行ごとにhおよびwにtdを足すようにする。
>ある程度の大きさの四角形になったらまた最初に戻り、
さらに最大値maxSizeも、クラスのpropatyに保持して、
sizeがmaxSizeになるまでは増加(tdをプラスの値に)、
maxSizeを超えたら、tdを負の値にして減少を図る。
さらに最小値minSizeも入れておくと延々と増大縮小し続けるようにも作れます。
>さらにボタンを表示させ、ボタンを押す度に四角形の拡大をストップ、スタートさせるプログラムを作れ。
java.AWT.Buttonとjava.AWT.ActionLsenerとをよく調べましょう。
そして先のjava.util.Timer か java.lang.Threadでthreadの停止、続行をaction()から実行させましょう。
>また、マウスでクリックした部分を中心に、徐々に大きな四角形を表示させるようにもするように。」
中心位置についての変数x,yを、クラスのpropatyとして持たせて、
MouseAdapter#mousePressed()でxおよびyを変更してrepaint()を呼び出す。
No.1
- 回答日時:
こんにちは、
出題とは、ちょっと違いますが、
中央に、黒い四角を表示させて、1秒ごとにその、四角がどんどん小さくなり、
ある程度の大きさになると、元の、四角の大きさにもどります。
目的とするプログラムは、これを参考にすればできると思います。
IDEは、netbeans5.0で書いているので、
無駄なコードもあるので、ご容赦!!
package bigrectangletest;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
public class bigretangletest extends javax.swing.JApplet {
int x=150,y=150,w,h,i;
Timer ti;
/** Initializes the applet bigretangletest */
public void init() {
try {
java.awt.EventQueue.invokeAndWait(new Runnable() {
public void run() {
initComponents();
}
});
} catch (Exception ex) {
ex.printStackTrace();
}
w=(int)(getWidth()* 0.7);
h=(int)(getHeight()* 0.7);
x=(int)(getWidth()/2);
y=(int)(getHeight()/2);
x = x-w/2;
y = y-h/2;
ti = new Timer(1000,new ActionListener() {
public void actionPerformed(ActionEvent e) {
i=i+1;
if (i==10){
i=0;
}
w=(int)(getWidth()* 0.7*Math.pow(0.9,i));
h=(int)(getHeight()* 0.7*0.9*Math.pow(0.9,i));
x=(int)(getWidth()/2);
y=(int)(getHeight()/2);
x = x-w/2;
y = y-h/2;
repaint();
}
});
ti.start();
}
public void paint(Graphics g) {
super.paint(g);
g.fillRect(x,y,w,h);
}
// <editor-fold defaultstate="collapsed" desc=" Generated Code">
private void initComponents() {
getContentPane().setLayout(null);
}// </editor-fold>
// Variables declaration - do not modify
// End of variables declaration
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- Java Java 配列<選挙> 4 2023/07/31 15:07
- Java javaのクラスの分け方について質問です。 APIの内部用と外部用でクラスを分けたいのですがインター 2 2022/04/26 16:06
- オープンソース Flaskでサーバー立ち上げに関して 1 2023/08/12 21:02
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
eclipseに記述したjavaファイル...
-
シャットダウンフックが呼ばれない
-
Androidプログラムについて
-
生年月日と今日の日付から年齢...
-
干支の計算で。。。
-
半透明の画像
-
「例外 *** は対応する try 文...
-
python OpenPyXLを使って出力結...
-
二次元配列について
-
ActionForm form にnullが入っ...
-
アーティスト名リストを取得す...
-
importするには java.io.*; imp...
-
JAVAサーブレット。 HTML...
-
<forEach> 内で供給された "ite...
-
Javaを使ってデジタル時計を作...
-
IF関数でEmpty値を設定する方法。
-
C言語のポインターに関する警告
-
System.err. printlnとSystem.o...
-
System.out.printlnの意味がよ...
-
1~100までの数字を表示し、か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
eclipseに記述したjavaファイル...
-
「例外 *** は対応する try 文...
-
ColabでのPytorchのエラー
-
Javaを使ってデジタル時計を作...
-
<forEach> 内で供給された "ite...
-
文字列を数式に
-
importするには java.io.*; imp...
-
python OpenPyXLを使って出力結...
-
Selenium IDEでexportしたコー...
-
シャットダウンフックが呼ばれない
-
Java3Dで横置き円筒体の円筒中...
-
Javaで常駐するソフトを作って...
-
生年月日と今日の日付から年齢...
-
Javaを使用して定時送信をしたい
-
干支の計算で。。。
-
Java での グローバルIP取得
-
GridBagLayoutについての質問
-
ファイル名を動的に生成したい
-
HTMLでのTableタグデータ取得方法
-
importとextendsの用い方の違い...
おすすめ情報