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

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

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

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

Q&A

解決済

1回答

1196閲覧

java アプレット

kisaragizinzin7

総合スコア90

Java

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

0グッド

0クリップ

投稿2015/10/27 00:36

アプレットの勉強をしています。

コード public class ap3 extends Panel{ APP parent3; //---------------------------------------------------------------------- Image img[] = new Image[3]; Label lab1 = new Label("あいこです"); Label lab2; Label lab3; Button bt1 = new Button("もう一度"); Button bt2 = new Button("次の試合へ"); //---------------------------------------------------------------------- public ap3(APP app){ parent3 = app; setBackground(Color.pink); setBounds(0, 0, 700, 700); setLayout(null); lab1.setBounds(300, 450, 100, 40); lab1.setFont(new Font("Serif", Font.PLAIN, 20)); lab2 = new Label("勝者 " + Arrays.toString(Judge.winnername_list)); lab2.setBounds(300, 450, 300, 40); lab2.setFont(new Font("Serif", Font.PLAIN, 20)); lab3 = new Label("敗者 " + Arrays.toString(Judge.losername_list)); lab3.setBounds(300, 500, 100, 40); lab3.setFont(new Font("Serif", Font.PLAIN, 20)); bt1.setBounds(320, 530, 70, 40); bt1.addActionListener(this); bt2.setBounds(320, 530, 70, 40); bt2.addActionListener(this); parent3.add(this); } } //---------------------------------------------------------------------- public void init(){ repaint(); } //---------------------------------------------------------------------- public void paint(Graphics g){ //JudgeクラスのJudge_judgeメソッドを呼び出し ap2.judge_main.Judge_judge(ap2.player_main1, ap1.player, ap1.player_PC, ap1.player_NPC); for(int i = 0; i < ap1.player; i++){ g.setFont(new Font(null, Font.PLAIN, 14)); g.drawString(ap2.player_main1[i].getName(), 80+150*i, 140); g.drawString(Judge.handarrange[i]+"を出した", 80+150*i, 200); }
コード public class Judge { //---------------------------------------------------------------------- int winnerhand; //勝った人の手 int loserhand; //負けた人の手 static int handarrange[]; static boolean handboolean[] = new boolean[3]; public void Judge_judge(Player player[], int playernum, int player_hum, int player_npc){ handarrange = new int[playernum]; handboolean = new boolean[]{false,false,false}; for(int i = 0; i < player_hum; i++){ handarrange[i] = player[i].Player_HUM_hand(); handboolean[handarrange[i]] = true; } for(int i = player_hum; i < playernum; i++){ handarrange[i] = player[i].Player_NPC_hand(); handboolean[handarrange[i]] = true; } System.out.println(Arrays.toString(handarrange)); }

アプレットを実行するとアプレットのウィンドウ(フレーム?)が開くのですが、このウィンドウの右上の最大化のボタンを押したり、ウィンドウの枠をドラッグしてウィンドウの大きさを変えたりすると
initメソッドなのかpaintメソッドなのかJudge_judgeメソッドなのかどのメソッドかはわかりませんが、このどれかのメソッドが勝手に動作してしまい最後のSystem.out.println(Arrays.toString(handarrange));が何回も表示されてしまいます。
これは何が原因なのでしょう?
わかる方がいましたら教えていただきたいです。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

フレームのサイズ等が変わると、描画更新のためPaintが呼ばれます。まずはどのタイミングでPaintが呼ばれるのかを抑えて勉強するといいでしょう。

また、logなどが、どこで呼ばれているかわからない場合は、System.out.println("メソッド名")をメソッドの頭で呼ぶと質問のヒントになるとおもいます。

Paintが呼ばれるタイミング

投稿2015/10/27 01:04

yona

総合スコア18155

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

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

kisaragizinzin7

2015/10/27 02:32

回答ありがとうございます^^ フレームのサイズ等が変わると、描画更新のためPaintが呼ばれます。 そういうことだったんですね。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問