• 締切済み

アプレットの配列をテキスト形式で保存する

ある画像の上をマウスクリックするとそこに赤いマーカーが表示され、さらにそのマーカーの座標をテキスト形式で保存できるプログラムを組みたいと考えています。マーカー表示はできましたが、保存方法がまったくわかりません。35箇所のマーカー座標を保存したいのですが…。 どなたか教えていただけませんでしょうか。 ブラウザ上で動作させたいので、JavaAppletにて組んでいます。 import java.awt.*; import java.awt.event.*; import java.applet.Applet; public class sample extends Applet{ private int[] xpos = new int[35]; private int[] ypos = new int[35]; private int num = 0; Image imgs; public sample(){ addMouseListener(new MyMouseAdapter()); } public void init(){ imgs = getImage(getDocumentBase(),"sample.gif"); } public void paint(Graphics g){ g.drawImage(imgs,0,0,this); g.setColor(Color.red); for(int i = 0; i < num; i++){ g.fillOval(xpos[i]-2, ypos[i]-2, 4, 4); } } class MyMouseAdapter extends MouseAdapter { public void mouseClicked(MouseEvent e){ if(num >= 35){ return; } int x,y; x = e.getX(); y = e.getY(); xpos[num] = x; ypos[num] = y; num++; Graphics g = getGraphics(); g.setColor(Color.red); g.fillOval(x-2, y-2, 4, 4); } } }

みんなの回答

  • bnosuke-x
  • ベストアンサー率39% (43/110)
回答No.2

アプレットをローカルから実行するには、アプレットのクラスファイル(コンパイルしてできた xxx.xlass ファイル)と、 アプレットを読み出す HTML ファイルを同じディレクトリに入れて、ブラウザから HTML ファイルを開けばいいです。 アプレットに限らず、ファイルへ出力するプログラムは以下のようになります。 関連クラスの名前を インポートします import java.io.File; import java.io.FileWriter; 出力用のメソッドを追加します。 void dataWrite(String filename ) { FileWriter fw; fw = new FileWriter( filename ); for ( i = 0; i < xpos.length ; i++) { fw.println(xpos[i], "," ,ypos[i]); -----(1) } fw.close(); } ファイルへ書きたいタイミングで下のメソッドを実行します。 dataWrite("output.txt"); どのような形式で出力するかは、(1)で決まるので、適切な形に変えてください。 今回はファイルへテキスト出力ということで FileWriter を使いましたが、 そうでない場合はまたいくつかクラスを組み合わせますので、その時はまた調べてください。

exia_2006
質問者

お礼

丁寧に教えていただき、本当にありがとうございました。

  • bnosuke-x
  • ベストアンサー率39% (43/110)
回答No.1

アプレットは、セキュリティ上の問題でそれをロードしてきたサーバーとの通信はできますが、ローカルのファイルシステムにアクセスすることはできません。 ですから、ファイルにデータを保存をすることはできません。 これを解決する方法は3つあります。 1)データをサーバー側で保存する アプレットは自分がやってきたサーバーとは通信できるので、そちらに保存してもらう。 2)アプレットを一旦ローカルのファイルシステムへ保存し、それを実行する 一旦ディスクなどへ保存されたアプレットは信頼されたことになり、ローカルのファイルシステムへアクセスできます。 3)証明書を使う アプレットへ署名をし、署名に対応する証明書を、アプレットを実行するブラウザに取り込む。 ファイルへの保存方法以前に、この問題もクリアしなければなりません。 どの方法で行きますか?

exia_2006
質問者

お礼

bnosuke-xさん 早速のお返事、本当にありがとうございます。 普通にやっては保存できないのですね。 「2)一旦ローカルファイルシステムへ保存する方法」を使ってやってみたいのですが、どのようにすればよいでしょうか。 本当に初心者なもので、ご迷惑をおかけします。

関連するQ&A

専門家に質問してみよう