![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
import java.awt.*;
import java.applet.*;
public class ani_ball extends Applet implements Runnable
{
Thread th_mvball = null;
int X,Y;
double x1,y1;
double x2,y2;
double dx,dy;
Graphics g;
public void init()
{
this.setBackground(new Color(150,245,255));
this.X = 250; this.Y = 250;
this.setSize(X,Y);
this.x1 = this.x2 = this.X/2;
this.y1 = this.y2 = this.Y/2;
this.dx = 3;
this.dy = 2;
}
public void paint(Graphics g)
{
g.setColor(Color.red);
g.fillOval((int)(this.x2-3),(int)(this.y2-3),6,6);
this.x1 = this.x2; this.y1 = this.y2;
}
public void start()
{
if(th_mvball == null)
{
th_mvball = new Thread(this);
th_mvball.start();
}
}
public void run()
{
while(true)
{
try
{
this.move();
this.repaint();
Thread.sleep(10);
}
catch(InterruptedException e )
{
this.stop();
}
}
}
public void move()
{
if( y2 > Y ) { y2 = 2*Y - y1 - dy; dy = -dy; }
else if ( y2 < 0) { y2 = -y1 - dy; dy = -dy; }
else if ( x2 > X) { x2 = 2*X - x1 -dx; dx = -dx; }
else if ( x2 < 0) { x2 = -x1 - dx; dx = -dx; }
if( x2 < 0 ) { x2 = -x2 ; dx = -dx; }
else if ( y2 < 0) { y2 = -y2; dy = -dy; }
else if ( x2 > X) { x2 = 2*X - x2; dx = -dx; }
else if ( y2 > Y) { y2 = 2*Y - y2; dy = -dy; }
x2 = x1 + dx;
y2 = y1 + dy;
}
public void stop()
{
if(th_mvball!=null)
{
th_mvball stop();
th_mvball=null;
}
}
}
↑のプログラムをコンパイルすると、「-Xlint: deprecation オプションを指定して再コンパイルしてください」とエラーが出ます。
エラーの対処法、またはプログラムの訂正すべき箇所を教えてください。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
>ためしに実行してみると、
java ani_ball
というように実行してませんか?
これは「Javaアプリケーション」の場合の実行方法であり、
アプレットの場合はHTMLファイルを作ってブラウザから実行する必要があります。
http://www.hellohiro.com/applet.htm
ついでに、コンパイル時の警告についてですが、
これはsystem0001さんのおっしゃるとおりです。
基本的に、この手のエラーが出るメソッドは、以前のバージョンでは
フツーに使っていたけど、バージョンが変わったことで「推奨されなく」なったものです。
なんで推奨されなくなったかと言うと、
・このメソッドより便利なメソッドを作った
・このメソッドに重大なバグがあって、使い方を間違えるとキケンなことが分かった
・その他。Sunの陰謀か(ウソです)
などさまざまあります。
理由はともかく、少なくとも言えるのは、
「バージョンが上がればいずれこのメソッドは使えなくなる(かもしれない)ので、
今のうちに別の手を考えといてください」
ということです。
ありがとうございます。
はぃ、確かにご指摘のように実行していました。
お礼を書いてから、「あぁ、バカだ...orz」と思いました。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_03.png?8acaa2e)
No.3
- 回答日時:
>java.lang.Threadのstop()は推奨されません
Java SE のAPIでメソッドを確認してみましょう。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/in …
stopは、「推奨されません」となっていますね。
stop,suspend,resumeといったスレッドを停止再開させる類のメソッドは、デッドロックの危険があるため非推奨になっています。現在、スレッドを停止するのにstopを使うことはまずありません。どうするかというと、終了フラグの変数を用意しておき、
while(フラグ変数){・・・スレッド処理・・・}
というようにして、抜けたいときにはフラグ変数をfalseにしてrunを抜け出すようにします。これでスレッドは安全に終了します。
No.1
- 回答日時:
こんばんは!
これは、確か・・・
推奨されないクラスやメンバを使用していたり、オーバーライドしている時に
出る警告ですよ!
-deprecationオプションを付加してコンパイルすると、
どのメソッドが推奨されていないか出るみたいです。
警告が出ても、実行できますよ!
試してみてください。
おっしゃるとおりのコンパイル方法だと、
java.lang.Threadのstop()は推奨されません
と出ます。
ためしに実行してみると、
Exception in thread "main" java.lang.NoSuchMethodError: main
と出て、実行できません。
どうしたらいいでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- 数学 【全微分について】 z=f(x,y) の全微分は df=(∂f/∂x)dx+(∂f/∂y)dy と表 1 2023/02/25 05:49
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- 数学 微分(全微分)についての質問です。 2 2022/04/07 17:08
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- 数学 前にも質問したものでx^3+y^3=1を陰関数を使って、点(1、0)、接線の方程式を求めなさいという 1 2023/07/08 12:17
- 物理学 全微分のdx,dyの意味 3 2023/05/26 08:13
- 数学 「急募!」数学 微分方程式 dy/dx=y+x*y^3 ・・・(1) 但しy(0)=±1をExcel 2 2022/07/20 21:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日本の教育って時間が無い中で...
-
エクセルVBAで、条件に一致する...
-
DataGridViewでセルクリックイ...
-
javaの質問です 次の機能を有す...
-
【sendkeysメソッドが動かずに...
-
final修飾子を使っているのに、...
-
エクセルVBAにおけるON TIMEメ...
-
「初心者です」-Xlint: depreca...
-
エクセルのマクロでプリンタを...
-
ExcelVBAのプログラムをJavaへ変換
-
onClickで関数呼出し後に、結果...
-
PDFファイルから別ウィンドウで...
-
VB.netで、シリアル通信のタイ...
-
3つの倍精度浮動小数点値の平均...
-
java 飾子を付けること(public...
-
URI Too Long エラーログについて
-
ジェネリックスに関して
-
C#で右からnカラム目に文字を挿...
-
Strutsで「setterメソッドが見...
-
VB.NET イベントハンドラの意識...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
final修飾子を使っているのに、...
-
JSPで<SELECT>の中にDBから持っ...
-
Labelコントロールに数字を代入...
-
エクセルVBAにおけるON TIMEメ...
-
javascriptからjavaを呼び出したい
-
DataGridViewでセルクリックイ...
-
VBPをダブルクリックするとたま...
-
onClickで関数呼出し後に、結果...
-
コマンドプロンプト実行後に画...
-
配列のメソッド
-
日本の教育って時間が無い中で...
-
Refreshメソッドの使い方
-
mainメソッドのthrows節で設定...
-
【sendkeysメソッドが動かずに...
-
C# 演算 最大値 最小値 表現の仕方
-
VBA コピーが出来ません…!
-
Application.Wait の参照設定
-
for文(拡張)内の変数(ローカ...
-
ウィンドウを最前面にできません
おすすめ情報