![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
古いですがJavaScript第5版を中古で買ってサンプルスクリプトを順に実行しています。
22.7.1 Javaによる円グラフの最初のコードでつまずきました。
次に私が書き写したサンプルコードを貼り付けます。
例22-14 クライアントサイドでの描画を行うためのJava Canvasアプレット
import java.applet.*;
import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
/**
* この単純なアプレットは、これ自身では何もしない。クライアントサイド
* JavaScriptコードから利用できるようにAPIをエクスポートするだけ。
*/
public class Canvas extends Applet {
BufferedImage image; // このオフスクリーン画像に対して描画する。
Graphics2D g; // このグラフィックコンテキストを利用する。
// ブラウザがこのメソッドを呼び出してアプレットを初期化する。
public void init() {
// アプレットの大きさを調べて、その大きさのオフスクリーン
// 画像を作成する。
int w = getWidth();
int h = getHeight();
image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
// 画像描画用のグラフィックコンテキストを取得する。
g = image.createGraphics();
// 真っ白な背景色から始める。
g.setPaint(Color.WHITE);
g.fillRect(0, 0, w, h);
// アンチエイリアスを有効にする。
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
}
// アプレットの再描画が必要なときに、ブラウザがこのメソッドを自動的
// に呼び出す。オフスクリーン画像をオンスクリーンにコピーする。
// JavaScriptコードから再描画させたい場合は、このメソッドではなく、
// このメソッドを継承したrepaint()メソッドを呼び出す。
public void paint(Graphics g) { g.drawImage(image, 0, 0, this); }
// 以下のメソッドは、基本的な描画パラメータを設定する。
// これはほんの一部で、Java2D APIはもっと多くのパラメータをサポートする。
public void setLineWidth(float w) { g.setStroke(new BasicStroke(w)); }
public void setColor(int color) { g.setPaint(new Color(color)); }
public void setFont(String fontfamily, int pointsize) {
g.setFont(new Font(fontfamily, Font.PLAIN, pointsize));
}
// 以下のメソッドは基本的な描画API。
public void fillRect(int x, int y, int w, int h) { g.fillRect(x,y,w,h); }
public void drawRect(int x, int y, int w, int h) { g.drawRect(x,y,w,h); }
public void drawString(String s, int x, int y) { g.drawString(s, x, y); }
// 以下のメソッドは、任意の図形を塗りつぶしたり、描画したりする。
public void fill(Shape shape) { g.fill(shape); }
public void draw(Shape shape) { g.draw(shape); }
// 以下のメソッドは、単純なShapeオブジェクトを返す。
// これは単なる例で、Java2D APIはもっと多くのAPIをサポートする。
public Shape createRectangle(double x, double y, double w, double h) {
return new Rectangle2D.Double(x, y, w, h);
}
public Shape createEllipse(double x, double y, double w, double h) {
return new Ellipse2D.Double(x, y, w, h);
}
public Shape createWedge(double x, double y, double w, double h,
double start, double extent) {
return new Arc2D.Double(x, y, w, h, start, extent, Arc2D.PIE);
}
}
コンパイルされたCanvas.classをHTMLファイルに埋め込み、スクリプトから制御するサンプルコード
<head>
<script>
window.onload = function() {
var canvas = document.getElementById('square');
canvas.setColor(0x0000ff); // 色を整数で指定することに注意。
canvas.fillRect(0,0,10,10);
canvas.repaint();
canvas = document.getElementById('circle');
canvas.setColor(0xff0000);
canvas.fill(canvas.createEllipse(0,0,10,10));
canvas.repaint();
};
</script>
</head>
<body>
This is a blue square:
<applet id="square" code="Canvas.class" width=10 height=10></applet>
This is a red circle:
<applet id="circle" code="Canvas.class" width=10 height=10></applet>
</body>
これを実行すると、5行目のcanvas.setColor(0x0000ff);のところで、
オブジェクトは 'setColor' プロパティまたはメソッドをサポートしていません。
となって停止してしまいます。
どんな原因が考えられますか。
No.1ベストアンサー
- 回答日時:
Javaの著作権を持つOracle社は、2017年9月22日にリリースされたJava 9でJavaアプレットを非推奨にし、Java 11[1]では廃止することを2016年1月27日に発表しました。
セキュリティ上の問題から、Javaアプレットだけではなく、FlashやSilverlightも廃止される予定です。
JavaScriptとHTML5にその座を譲ったのですね。
そのため、FirefoxやIEなどのブラウザでJavaアプレットが動作しない設定になっていることがあります。また、JavaVMが搭載されていないということもあるようです。
以下のWikiなどごらんください。
https://ja.wikipedia.org/wiki/Java%E3%82%A2%E3%8 …
そういうことだったのですね。
JavaScriptの書籍が格安で手に入って喜んでいたのですが、あまり古い書籍を買うのはよろしくありませんね。
奇跡的にFirefox3の環境があったので、これで実行したところ、見事に動きました。
当方JavaScriptの学習のために、この書籍を買ったのですが、まさにJavaが出てきたりFlashが出てきたり、いろいろ学習すべきものが増えてうんざりしていたところでした。
これらが廃止される予定ということは、私にとってはJavaScriptの学習に集中できるので好都合です。
No.2
- 回答日時:
>>私にとってはJavaScriptの学習に集中できるので好都合です。
古い専門書は、値段が安いけど注意しないと、使われなくなった技術の勉強をすることになりますからね。
なお、JavaScriptを学ぶときは、同時にHTML/CSSとかフレームワークのjQueryやBootStrapの専門書も入手して学ばないと、参考ソースを読むとき「これ何だろう???」と悩むことになりますので、ご注意ください。
安さを取るか、新しさを取るか、それが問題ですね。
しかし定価4200円の本が800円で売ってると、やはり飛びついてしまうのです^^
jQueryについては、たびたび目にするようになりましたが、やはり「これ何だろう???」状態です。
ひとまずjQuery等の書籍を買うかどうかは、後で考えるとして、まずはこの古くてもそこそこ詳細なJavaScriptの教材を最後まで読み進めることとします。
お探しの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
- C言語・C++・C# c言語でユーザ関数を利用して複素数のべき乗と絶対値の数列を計算するプログラムが作りたいです。 3 2023/01/29 22:13
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- C言語・C++・C# プログラミングを教えて欲しいです。 配列aは、int a[9]={7,6,12,8,3,5,10,9 4 2022/12/19 23:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Javaで電卓を作りたい
-
javaでcsvファイル読込時の改行...
-
コード中の謎のエラー
-
intが負の時に投げる例外はあり...
-
Javaについて
-
「配列定数は、イニシャライザ...
-
Java 初心者 int型の取り扱い方
-
SwingでJtableのヘッダ行が表示...
-
C#で「型または名前空間名 'int...
-
全組み合わせの出力
-
JUnit4のアノテーションについて
-
初心者ですが、今javaで簡単な...
-
C#でfirefoxのウインドウを移動...
-
C#で実行時にメソッドの返り値...
-
Swing の実装でどうしてもエラ...
-
式の型は配列型で int に解決済...
-
Swing実装での図形の追加と色の...
-
JAVAでCの関数ポインタのような...
-
java初心者の質問(3つの整数の...
-
C言語のポインターに関する警告
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「配列定数は、イニシャライザ...
-
Javaで電卓を作りたい
-
式の型は配列型で int に解決済...
-
javaでカレンダー作成
-
JAVA エラー 式の開始が不正で...
-
JAVAでCの関数ポインタのような...
-
java spring でエラーが出て困...
-
6桁の数字を重複なしでランダム...
-
c# デリゲート関連の命名について
-
C++からC#のdllを参照する際、...
-
メインが含まれていません
-
(Swing)JTextFieldを半角のみ入...
-
DataSet(DataTable)の使い方
-
三目並べ(Tick-Tack-Toe)をJav...
-
JUnit4のアノテーションについて
-
初心者ですが、今javaで簡単な...
-
classを使って座標軸を求めるコ...
-
javaでcsvファイル読込時の改行...
-
C#で実行時にメソッドの返り値...
-
Java 初心者 int型の取り扱い方
おすすめ情報