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

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

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

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

Q&A

解決済

1回答

2172閲覧

アプレット パネル

kisaragizinzin7

総合スコア90

Java

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

0グッド

0クリップ

投稿2015/10/19 04:53

編集2015/10/19 05:18

javaアプレットを勉強しています。
パネルを作って、そこに画像を張り付けて表示させたいと思っています。
ですが、実行しても表示されません。
パネルに画像を張り付けることはできないのでしょうか?

コード package applet; import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class APP extends Applet{ public Panel panel; public void init(){ setLayout(null); panel = new ap3(this); } }
コード package applet; import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class ap3 extends Applet{ APP parent3; //-------------------------------------------------------------------------------- Image img[] = new Image[3]; //-------------------------------------------------------------------------------- public ap3(APP app){ parent3 = app; setBackground(Color.pink); setBounds(0, 0, 700, 700); setLayout(null); parent3.add(this); } public void init(){ for(int i = 0; i < 3; i++){ img[i] = getImage(getDocumentBase(), "image" + (i+1) + ".jpg"); } repaint(); } public void paint(Graphics g){ for(int i = 0; i < 4; i++){ player_main[i] = new Player("プレイヤー" + (i+1)); g.setFont(new Font(null, Font.PLAIN, 14)); g.drawString(player_main[i].getName(), 80+150*i, 140); g.drawImage(img[i], 80+150*i, 300, 60, 60, this); } } }

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

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

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

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

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

argius

2015/10/19 05:02

どのように貼り付けたのかを書いていただけますか?
kisaragizinzin7

2015/10/19 05:19

上にプログラムを書いておきました! よろしくお願いします!
guest

回答1

0

ベストアンサー

Appletinit()start()は、起動したアプレット(今回の場合はAPP)だけで呼ばれます。
ap3クラスは、Appletではなく、Panelなどを継承した方が良いと思います。
getDocumentBase()getImage()は、APPのものを使います。

また、画像はJavaファイルと同じ場所にあるとしたら、相対位置は ドキュメントベース+"applet"になります。
それと、new Image[3]はおそらくnew Image[4]が正しいです。

以上を踏まえて修正した例です。

lang

1public class ap3 extends Panel { 2 3 APP parent3; 4 5 6//-------------------------------------------------------------------------------- 7 Image img[] = new Image[4]; 8 9//-------------------------------------------------------------------------------- 10 public ap3(APP app){ 11 12 parent3 = app; 13 14 setBackground(Color.pink); 15 setBounds(0, 0, 700, 700); 16 17 18 setLayout(null); 19 20 parent3.add(this); 21 22 URL documentBase = app.getDocumentBase(); 23 for(int i = 0; i < img.length; i++){ 24 img[i] = app.getImage(documentBase, "applet/image" + (i+1) + ".jpg"); 25 } 26 } 27 28 public void paint(Graphics g){ 29 30 for(int i = 0; i < 4; i++){ 31 player_main[i] = new Player("プレイヤー" + (i+1)); 32 g.setFont(new Font(null, Font.PLAIN, 14)); 33 g.drawString(player_main[i].getName(), 80+150*i, 140); 34 g.drawImage(img[i], 80+150*i, 300, 60, 60, this); 35 } 36 37 } 38 39} 40

投稿2015/10/19 07:10

argius

総合スコア9390

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

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

kisaragizinzin7

2015/10/19 07:38

回答ありがとうございます^^ 質問なのですが、 ・URL documentBase = app.getDocumentBase();は何を表しているのでしょうか? ・getDocumentBase()とgetImage()は、APPのものを使います。とありますが、なぜAPPのものを使わないといけないのでしょうか? すみませんが、よろしくお願いします。
argius

2015/10/19 08:03

documentBaseとは、現在実行中のアプレットの位置です。 アプレットでは、セキュリティー上の制限に寄りリソースにアクセスする場合に絶対位置にアクセスできません。リソースにアクセスする場合、documentBaseからの相対位置でアクセスします。 getDocumentBase()とgetImage()は、私も正確な定義は知らないのですが、たぶんこういうことだと思います。 Appletとして起動したものは、起動時にさまざまな準備を行います。ap3は、Appletを継承していても起動しているAppletではないので、準備がされていないし、init()も呼ばれません。 また、getDocumentBase()とgetImage()は、おそらくAppletとして起動したクラスでしか有効になりません。 今回の場合はAPPクラスだけがAppletとして起動したクラスなので、APPのgetDocumentBase()とgetImage()を呼ぶようにしています。
kisaragizinzin7

2015/10/26 06:36

そういうことなんですね! 納得です! 回答ありがとうございました^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問