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

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

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

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

Q&A

解決済

2回答

252閲覧

JAVAアプレットが何故か二度繰り返す

sakai-taichi

総合スコア8

Java

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

0グッド

0クリップ

投稿2018/05/01 05:49

前提・実現したいこと

高2の初心者です。アプレットが何故か二度繰り返してしまう。
20本の縦線を引いて終わりたいのですが、同じ処理を二回繰り返します。コンパイルエラーはありません。原因と解決方法を教えてください。
横線も引き、碁盤のようなものを表示するプログラムを書くことが目的です。

該当のソースコード

import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Font;
import java.awt.Dimension;
/*
<applet height=800 width=800 code="AB43.class"></applet>
*/
// 出席番号12 組3

public class AB43 extends Applet{

public void paint(Graphics g) { int i,j,x; int x1=100,y1=100,x2=100,y2=600; int x3=100,y3=100,x4=600,y4=100; for( i = 0 ; i <= 500 ; i=i+20){ g.drawLine(x1+i,y1,x2+i,y2); try { Thread.sleep(100) ; }catch (InterruptedException e) {} }

}
}

試したこと

Thread.sleep(100) ;を入れたら、繰り返していることがわかりました。

補足情報(FW/ツールのバージョンなど)

環境 Windows10 java 1.8.0_171

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

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

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

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

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

guest

回答2

0

ベストアンサー

本題ではありませんが、Javaアプレットはもはや役割を終えた技術です。ブラウザプラグインはJava 9で非推奨となっており、ブラウザ側でもChrome、Firefoxなどはすでにプラグインを組み込めなくなっています。そして、java.applet自体もJava 10ではdeprecatedとなっています。

いまさらアプレットでものを作っても、公開できる場所はありません。既存のアプレットを手直しするような状況でないのなら、アプレットの学習自体をやめて別な技術に乗り換えましょう。

  • ブラウザ内で動作させるもの→JavaScript(ほぼ一択)
  • Javaで作るGUIプログラミング→JavaFXなど

投稿2018/05/01 06:27

maisumakun

総合スコア145184

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

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

sakai-taichi

2018/05/03 23:33

JavaScriptに挑戦していきたいと思います。
guest

0

Javaに限らずGUI一般に言えることですが、「何か(Event)が起きたら、必要なこと(Handling for the event)」を行うという考え方でできてます。

paintメソッドは(A)「画面上にそのGUI要素の内容を描画すべきタイミングがきたら」Javaのランタイムから自動的に(B)「内容を描画しなさい」という意味で呼び出されるメソッドです。

いつ(A)が起きるかはJavaランタイムシステムが考えてくれます。あなたの環境ではそれがたまたま2回起きたということです。その理由を知るにはもっとディープな知識がついてから取り組むとわかるようになると思いますが・・・

どんな時に描画が必要かの例をいうと

  • ウィンドウが表示されたばかりのとき
  • 表示すべき内容が変化する可能性があるとき

例えばウィンドウの大きさが変わったとかそういうときです。

投稿2018/05/01 06:15

KSwordOfHaste

総合スコア18394

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問