
古いですが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で質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
6桁の数字を重複なしでランダム...
-
式の型は配列型で int に解決済...
-
javaでcsvファイル読込時の改行...
-
javaでカレンダー作成
-
スケジュール帳を作ろうとして...
-
「配列定数は、イニシャライザ...
-
複数のボタンを配置し、それぞ...
-
メインが含まれていません
-
初心者ですが、今javaで簡単な...
-
sin曲線とcos曲線を描くプログ...
-
コード中の謎のエラー
-
Swing の実装でどうしてもエラ...
-
分を表す数字(int型)を時間形...
-
Java 初心者 int型の取り扱い方
-
javaで電卓を作りたいのですが...
-
IF関数でEmpty値を設定する方法。
-
オブジェクトの中のプロパティ...
-
動的配列が存在(要素が有る)か...
-
System.err. printlnとSystem.o...
-
C言語のポインターに関する警告
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「配列定数は、イニシャライザ...
-
メインが含まれていません
-
式の型は配列型で int に解決済...
-
javaでカレンダー作成
-
DataSet(DataTable)の使い方
-
Java 初心者 int型の取り扱い方
-
java初心者の質問(3つの整数の...
-
javaでcsvファイル読込時の改行...
-
Java 日付の加算がうまくいき...
-
JAVA エラー 式の開始が不正で...
-
6桁の数字を重複なしでランダム...
-
コンパイルできません
-
SwingでJtableのヘッダ行が表示...
-
C#で実行時にメソッドの返り値...
-
intが負の時に投げる例外はあり...
-
意味がわかりません
-
コンパイラが注意してくる
-
複数のボタンを配置し、それぞ...
-
Threadに関するの質問
-
C#でバブルソート
おすすめ情報