こんにちはー。
今回はコーディングに関しての質問です。
以前よりわけのわからないソースと格闘しながらjavaの勉強を進めてきた私なのですが、今回は無謀ながらにも自分で簡単なソースを作成してみようと思いました。(そうした方が進歩はちょっと早くなるかなと思って。。)
そこで!
なるべく早く会社の力となるべく、効率的な勉強をしたいと思っています。
私はただ今appletを使用して絵を動かすようにコーディングしているのですが、絵を表示するメソッドと文章を表示するメソッド、どちらを深く勉強した方がいいのでしょうか?
今は携帯でもjavaが使われているからグラフィック関係のメソッドを多く使うのかなとも思うけど…?
簡単な答えでいいですので、よろしくお願いします。

A 回答 (1件)

>私はただ今appletを使用して絵を動かすようにコーディングしているのですが、絵を表示するメソッドと


>文章を表示するメソッド、どちらを深く勉強した方がいいのでしょうか?

質問の内容から察するに、それほど高度な事をやろうとしてるわけでは無いと思います。
であれば、どちらもそれほど深くないので、どちらも勉強したら良いと思いますよ。

ちなみに、会社ではどんなアプリケーションを作るんでしょうか。

サーバサイド?
携帯アプリ?
Applet?
・・・

会社でappletのアプリケーションを作るのでなければ、
appletで勉強を進める事を見直した方が良いかもしれないです。
私はappletは仕事で使ったことがないです・・・。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qimport java.applet.Applet;について

ソースの先頭にimport java.applet.Applet;と書かれたソースをコンパイルすると、ローカルのjava.applet.Appletを読み込んで*.classを作るのだと思うのですが、java.applet.Appletが見つかりません。
普通はどのあたりにあるのでしょうか?

Aベストアンサー

java.applet.AppletクラスはJavaの実行環境(JRE)、またはJavaの開発環境(J2SE)のライブラリとして標準でインストールされています。

具体的には、下記のディレクトリの"rt.jar"に含まれています。(Windowsの場合)

■JRE
 C:\Program Files\Java\<Javaのバージョン>\lib

■J2SE (C:\j2sdk1.4.2にインストールした場合)
 C:\j2sdk1.4.2\jre\lib

通常は、コンパイル時には上記のJ2SE側の rt.jar を使ってコンパイルされるので java.applet.Appletクラスの存在を意識しなくても良いです。
また、実行時には上記のJRE側の rt.jar が使用されます。

ですから、コンパイル時、あるいは実行時にそれぞれのディレクトリに rt.jar がないとエラーが発生します。

ちなみに rt.jar の中身を確認したいのであれば、下記のコマンドをコマンドプロンプトから実行し、出力先のファイルをテキストエディタで開くと確認できます。

 cd C:\j2sdk\jre\lib   ← ディレクトリ移動

 jar tvf rt.jar > C:\Temp\result.txt ← rt.jarの中身をテキストファイルに出力

 notepad C:\Temp\result.txt   ← メモ帳で出力結果を表示


 出力結果のファイルには、java.applet.Appletであれば "java/applet/Applet" のように "." が "/" に置き換わって出力されています。

java.applet.AppletクラスはJavaの実行環境(JRE)、またはJavaの開発環境(J2SE)のライブラリとして標準でインストールされています。

具体的には、下記のディレクトリの"rt.jar"に含まれています。(Windowsの場合)

■JRE
 C:\Program Files\Java\<Javaのバージョン>\lib

■J2SE (C:\j2sdk1.4.2にインストールした場合)
 C:\j2sdk1.4.2\jre\lib

通常は、コンパイル時には上記のJ2SE側の rt.jar を使ってコンパイルされるので java.applet.Appletクラスの存在を意識しなくても良いです。
また、実行時...続きを読む

QApplet内のpaintメソッド

Applet内のpaintメソッドで前もって配列に読み込んでおいた画像を
複数枚表示しようと、for文を利用して描画しています。

しかし、paint()が何回も呼ばれ(コンソールにデバック文を表示して確認)
思ったとおりの配列indexになりません。

paintが起動直後に複数回呼ばれるのは仕様でしょうか?

よろしくおねがいします。

Aベストアンサー

>paintが起動直後に複数回呼ばれるのは仕様でしょうか?

複数回呼ばれる仕様になってるかどうかはわかりませんが、AWTの表示コンポーネントは、再描画の必要が生じたとき、可能な限り速やかにupdateされるように設計されています。
 例えば、あるイメージファイルを読み込んで表示するようなとき、ネットワークの環境によっては転送にかかる時間は変わります。すべて読み込むまで全く画面が反応しないのでは困ります。そこでJavaではMediaTrackerで読み込み状態をトラッキングしたり、ImageProducerで更新管理をしたりできるようになっているわけですね。Javaでは必要に応じてイメージの読み込み途中であっても画面が更新できますし、それは必要な措置なわけです。
 従って、必要に応じて起動時に複数回表示の更新が行われることはあると思います。

「paint()が何回も呼ばれ(コンソールにデバック文を表示して確認)
思ったとおりの配列indexになりません」

これがよくわからないのですが。paintが何回呼ばれようと、プログラムの動作に影響が出るようなことはないはずですが、いったい、どういうやり方をしているのでしょう? それがわからないと何ともいえないのですが・・。

>paintが起動直後に複数回呼ばれるのは仕様でしょうか?

複数回呼ばれる仕様になってるかどうかはわかりませんが、AWTの表示コンポーネントは、再描画の必要が生じたとき、可能な限り速やかにupdateされるように設計されています。
 例えば、あるイメージファイルを読み込んで表示するようなとき、ネットワークの環境によっては転送にかかる時間は変わります。すべて読み込むまで全く画面が反応しないのでは困ります。そこでJavaではMediaTrackerで読み込み状態をトラッキングしたり、ImageProducerで更新管...続きを読む

QJavaソースコードをコンパイルするJavaプログラム

タイトルの通りですが、Javaソースコードをコンパイルし、実行するJavaプログラムを作りたいのですが、なにか有効な方法はありますでしょうか。
Runtime.getRuntime().exec( "javac Test.java" );
のようにすると、エラーになります。

なにか良い方法をご存知でしたら、よろしくお願いします。

Aベストアンサー

Javaのソースコードをコンパイルするのでしたら、Runtime.getRuntime().exec()を使ってもいいですけど、com.sun.tools.javacを使っては? これは、JDKのjavacコマンドが実行されるときに内部から呼び出されるコンパイルクラスです。

// 以下をimport
// import com.sun.tools.javac.*;

Main main = new Main();
String[] param = {"./Sample.java"};
main.compile(param);

例えばこんな具合にしてcom.sun.tools.javacのMainインスタンスを作成し、ファイルパスの配列を引数にしてcompileを呼び出してやります。わざわざexecで外部のタスクとして起動するより、こちらのほうがスマートかと。

QJava Applet での虫食い算での質問

初めて利用させていただきます。
今、課題で虫食い算のプログラムを作成しているのですが、うまく動作してくれません。

もしよろしければご指摘をしてもらえればと思い書き込みのほうをさせていただきます。

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Event;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Panel;
import java.applet.Applet;

public class musikuizan_1 extends Applet
{

int A, B;
int cnt;

int sub(int n,int m)
{
int i;
for (i=1; i<m; i++)
n /= 10;

return n % 10;
}

void puzzle()
{
int a;
int b;
int c;
int d;
int e;


for (a=1; a<=99; a++)
{
for (b=1; b<=99; b++)
{
c = a * (b % 10);
d = a * (b / 10);
e = a * b;
if (c>=100 && c<=999 && d>=10 && d<=99 && e>=100 && e<=999) /*桁数調整*/
{
if (sub(b,1)==3 && sub(c,2)==1 && sub(d,2)==8) /*穴埋めされてある部分の数*/
{
A = a; B = b;
cnt++;
}
}
}

}

}
public void init()
{
setBackground(new Color(150,180,200));
setLayout(new BorderLayout());
Panel psouth = new Panel();
psouth.add(new Button("実行"));
add("South", psouth);
}

public void paint(Graphics g)
{
int i, c, d, e;

for (i=1; i<=2; i++)
{
g.drawRect(97-i*20, 5,16,16);
g.drawRect(97-i*20,25,16,16);
g.drawRect(77-i*20,65,16,16);

}
for (i=1; i<=3; i++)
{
g.drawRect(97-i*20,45,16,16);
g.drawRect(97-i*20,85,16,16);

}
for (i=1; i<=4; i++)
g.drawLine(30,43,100,43);
g.drawLine(30,83,100,83);

g.setFont(new Font("Helvetica",Font.BOLD,18));
g.drawString("x",40, 40);

if (A == 0)
{
g.drawString("3",60, 40);
g.drawString("1",60, 60);
g.drawString("8",60, 80);
g.setFont(new Font("Helvetica",Font.PLAIN,12));
g.drawString("cnt = ",30,115);
}
else
{
c = A * (B % 10);
d = A * (B / 10);
e = A * B;
g.setFont(new Font("Helvetica",Font.BOLD,18));
for (i=1; i<=2; i++)
{
g.drawString(Integer.toString(sub(A,i)),100-i*20, 20);
g.drawString(Integer.toString(sub(B,i)),100-i*20, 40);
}
for (i=1; i<=3; i++)
{
g.drawString(Integer.toString(sub(c,i)),100-i*20, 60);
g.drawString(Integer.toString(sub(d,i)), 80-i*20, 80);
}
for (i=1; i<=4; i++)
g.drawString(Integer.toString(sub(e,i)),100-i*20,100);

g.setFont(new Font("Helvetica",Font.PLAIN,12));
g.drawString("cnt = "+Integer.toString(cnt),30,115);
}
}

public boolean action(Event e, Object arg)
{
if ("実行".equals(arg))
{
if (A == 0)
puzzle();
else
A = cnt = 0;
repaint();
}
return true;
}
}

初めて利用させていただきます。
今、課題で虫食い算のプログラムを作成しているのですが、うまく動作してくれません。

もしよろしければご指摘をしてもらえればと思い書き込みのほうをさせていただきます。

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Event;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Panel;
import java.applet.Applet;

public class musikuizan_1 extends Applet
{

int A, B;
int cnt...続きを読む

Aベストアンサー

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Event;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Panel;
import java.applet.Applet;

/*
元のをベースにしたもので、本来はもっと改良できるはず。
なのでまだ締め切らない方が良いかと
*/

public class musikuizan_1 extends Applet
{

public int A, B;
public int cnt;

public int sub(int n,int m)
{
int i;
for (i=1; i<=m; i++)/* 終了条件を変更 */
{
n /= 10;
}
return n % 10;
}

public void puzzle()
{
int a;
int b;
int c;
int d;
int e;

for (a=1; a<=99; a++)
{
for (b=1; b<=99; b++)
{
c = a * (b % 10);
d = a * (b / 10);
e = a * b;
if (c>=100 && c<=999 && d>=10 && d<=99 && e>=100 && e<=999) /*桁数調整*/
{
if (sub(b,1)==3 && sub(c,1)==1 && sub(d,1)==8) /*穴埋めされてある部分の数*/
{
A = a;
B = b;
cnt++;
}
}
}

}

}
public void init()
{
setBackground(new Color(150,180,200));
setLayout(new BorderLayout());
Panel psouth = new Panel();
psouth.add(new Button("実行"));
add("South", psouth);
}

public void paint(Graphics g)
{
int i, c, d, e;

for (i=1; i<=2; i++)
{
g.drawRect(97-i*20, 5,16,16);
g.drawRect(97-i*20,25,16,16);
g.drawRect(77-i*20,65,16,16);

}
for (i=1; i<=3; i++)
{
g.drawRect(97-i*20,45,16,16);
g.drawRect(97-i*20,85,16,16);

}
for (i=1; i<=4; i++)
{
g.drawLine(30,43,100,43);
g.drawLine(30,83,100,83);

g.setFont(new Font("Helvetica",Font.BOLD,18));
g.drawString("x",40, 40);
}
if (A == 0)
{
g.drawString("3",60, 40);
g.drawString("1",60, 60);
g.drawString("8",60, 80);
g.setFont(new Font("Helvetica",Font.PLAIN,12));
g.drawString("cnt = ",30,115);
/*
デバッグ用
g.drawString("A:"+Integer.toString(A),300,300);
g.drawString("B:"+Integer.toString(B),300,310);
*/
}
else
{
c = A * (B % 10);
d = A * (B / 10);
e = A * B;
g.setFont(new Font("Helvetica",Font.BOLD,18));
/* sub関数の変更に伴い、ループの開始条件・終了条件、および表示する座標の式が変化しているので注意 */

for (i=0; i<=1; i++) {
g.drawString(Integer.toString(sub(A,i)),80-i*20, 20);
g.drawString(Integer.toString(sub(B,i)),80-i*20, 40);
}
for (i=0; i<=2; i++)
{
g.drawString(Integer.toString(sub(c,i)),80-i*20, 60);
}
for (i=0; i<=1; i++)
{
g.drawString(Integer.toString(sub(d,i)), 60-i*20, 80);
}
for (i=0; i<=2; i++){
g.drawString(Integer.toString(sub(e,i)),80-i*20,100);
}
g.setFont(new Font("Helvetica",Font.PLAIN,12));
g.drawString("cnt = "+Integer.toString(cnt),30,115);
g.drawString("A:"+Integer.toString(A),300,300);
g.drawString("B:"+Integer.toString(B),300,310);
}

}

public boolean action(Event e, Object arg)
{
if (arg.toString().equals("実行"))
{

if (A == 0){
puzzle();
}
else
{
repaint();
}

}

return true;

}
}

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Event;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Panel;
import java.applet.Applet;

/*
元のをベースにしたもので、本来はもっと改良できるはず。
なのでまだ締め切らない方が良いかと
*/

public class musikuizan_1 extends Applet
{

public int A, B;
public int cnt;

public int sub(int n,int m)
{
int i;
for (i=1; i<=m; i++)/* 終了条件を変更 */
...続きを読む

Qjava applet実行について

eclipseやIE(ウェブブラウザ)でなく、
cmdで「java Testapplet」などと入力し、実行をしたいと思っています。
何か方法はないでしょうか?

Aベストアンサー

適切にコメントがあれば appletviewer で実行できます.


人気Q&Aランキング

おすすめ情報