• 締切済み

【java applet】他のクラスを呼び出して図形を描写するには

hrm_mmmの回答

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.3

#1へのお礼 での、paintの挙動について http://wisdom.sakura.ne.jp/system/java/swing/swing8.html より引用 |描画する度に背景色でクリアするという仕様 なので、毎回0から書き直しと同じ状態になります。 java.awt.Imageかjava.awt.image.BufferedImageを用意して、こちらに描いてから、paint()では、このImageを表示用画面にコピーという方式をとる必要があります。

関連するQ&A

  • 【Java】画像表示が出来ない!

    Java初心者です。 Eclipseを使って、Javaアプレットでjpeg画像を表示させようとしたのですが、上手くいきません。表示したい画像をインポートして、このようなコードを書きました。 import java.applet.Applet; import java.awt.*; /* <applet code="クラス名.class" width="497" height="600"> <param name="img" value="img/test.jpg"> </applet>*/ public class クラス名 extends Applet { Image img; public void init() { img = getImage(getDocumentBase() , getParameter("/test.jpg")); } public void paint(Graphics g) { g.drawImage(img , 0 , 0 , this); } } Javaアプレットで実行しても、アプレットは真っ白なままです。GIF画像でも試してみましたが、同じく失敗でした。他のJavaアプレットのプログラム(図形を表示したり)は成功したので、私のパソコンのJavaは問題ないと思います。回答よろしくお願いします。

    • ベストアンサー
    • Java
  • appletの画像が表示されない

     画像を表示するappletを作ったんです。  コマンドのappletviewerでは確認出来るんですが、IEでは何故か表示されません。何故なんでしょう?  WINXP/IE6.0.2600です。  以下にコードを記述します。 import java.awt.*; import java.applet.*; public class test extends Applet {  Image img;  public void init() {   img = getImage(getDocumentBase(), "test.PNG");  }  public void paint(Graphics g) {   g.drawImage(img, 10, 10, this);  } }

    • ベストアンサー
    • Java
  • Java初心者ですが・・・

    Java初心者ですが・・・ こんにちは、さっそくですが質問させていただきます 以下のようなコードがあるとき、特定のキーを押したときに、 表示されている文字列を消去するには、どのようにすればよいのでしょうか 特定のキーコードのときに、str1に、"" を代入するだけではだめなのでしょうか お手数ですがよろしくお願いします import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class App25_2 extends Applet { char ch; FontMetrics fo; String st1 ="", st2; public void init() { setBackground(new Color(190,190,210)); setFont(new Font("Serif", Font.BOLD, 30)); fo = getFontMetrics(getFont()); addKeyListener(new KeyAdapter() { public void keyTyped(KeyEvent e) { ch = e.getKeyChar(); st2 = String.valueOf(ch); st1 += st2; repaint(); } } ); } public void paint(Graphics g) { Dimension dim = getSize(); g.setColor(Color.red); ; int stwidth = fo.stringWidth(st1); g.drawString(st1, (dim.width/2) - stwidth/2, dim.height/2 ); } }

    • ベストアンサー
    • Java
  • Appletのrepaint()が動作しません

    import java.applet.*; import java.awt.*; /*<applet code="zxy" width="1000" height="1000"></applet>*/ class Object extends Applet { protected int x; /* オブジェクトのx座標 */ protected int y; /* オブジェクトのy座標 */ protected int width; protected int height; Image buffer; Graphics buffer_g; Dimension d = getSize(); public Object() { x = 0; y = 0; width = 0; height = 0; } } /* 楕円クラス */ class Oval extends Object implements Runnable { public Oval() { width = (int)(Math.random() * 56 + 10); height = (int)(Math.random() * 56 + 10); } public void run() { while( true ){ try{ repaint(); Thread.sleep(50); } catch( Exception e ){} } } public void paint( Graphics g ) { if( buffer_g == null ) buffer_g = buffer.getGraphics(); Dimension d = getSize(); buffer_g.setColor( Color.white ); buffer_g.fillRect( 0, 0, d.width, d.height ); buffer_g.setColor( Color.black ); buffer_g.drawOval( x, y, width, height ); x += (int)(Math.random() * 10); y += (int)(Math.random() * 10); g.drawImage( buffer, 0, 0, this ); } } public class A extends Applet { Image buffer; Graphics buffer_g; Oval ov1 = new Oval(); Thread thOv1 = new Thread( ov1 ); public void start() { thOv1.start(); Dimension d = getSize(); buffer = createImage( d.width, d.height ); } } 上記プログラムを実行しても、paint()の中が実行されずにtryブロックを繰り返すだけになってしまいます。paint()を実行するにはどうすればいいでしょうか?

  • add( )メソッドについて

    import java.applet.Applet; import java.awt.*; /* <applet code="Sample" width=400 height=250> </applet> */ public class Sample extends Applet { public void init() { // ラベルを作成する。 Label lb = new Label("こんにちは。", Label.LEFT); add(lb); } } 上記のプログラムのadd(lb)について質問です。上記のadd()メソッドは、lbはLabelクラスなので、LabelクラスかComponentクラスのパラメーターを一つ持つvoid型のadd()メソッドとなると思うのですが、調べてもそのようなメソッドが存在しませんどうしてでしょうか?上述のことが間違っているのでしょうか?教えてください。

    • ベストアンサー
    • Java
  • アプレットを実行すると、×が表示され、Javaアプレットの読み込みに失敗しました。のメッセージが表示されます。

    Java JDK5をインストールしました。 C:\Program Files\Javaに jdk1.5.0_06 jre1.5.0_06 がインストールされています。 コンパイルは、PATHにC:\Program Files\Java\jdk1.5.0_06\binを追加すれば、できるようになりました。 Javaアプレットの読み込みに失敗しました。のメッセージが表示されます。 // 図形の表示 import java.applet.*; import java.awt.*; public class Test_0002 extends Applet{ public void paint(Graphics g){ g.fillOval(0, 0, 200, 100); } }

    • ベストアンサー
    • Java
  • appletを使ったJavaプログラミング

    Java初心者なのですが、ランダムユニークナンバーをarrayに代入し、長方形の高さが全て違う様に表記したいのですが、全く表記出来ません。 おそらく、arrayに代入する時点までは大丈夫だとは思うのですが、どのようにしたら長方形に高さを代入してappletで表記出来るのでしょうか? import java.awt.*; import java.applet.*; import java.awt.event.*; import java.util.Random; import java.io.*; public class GUI extends Applet { public void update(Graphics g) { paint(g); } Button button = new Button("Sort Me"); Label text = new Label("Pink: Selection Sort" + "\n" + "Green: Inseration Sort"); int[] store = new int[20]; public static int[] findValue(int [] store){ int rand; for (int i = 0; i < store.length; i ++){ do{ rand = (int)(Math.random()*21)+10; } while(doesExists(rand, store, i)); store[i] = rand; } return store; } private static boolean doesExists(int rand, int[] arr, int i){ if(i != 0){ for(int j =0; j < i; j++){ if(rand == arr[j]){ return true; } } } return false; } int Counter = 0; int xScale = 0; public void displayRectangles(Graphics g) { if(Counter < 20) { xScale += 15; int x = 80 + xScale; int H = store[Counter]; g.setColor(Color.pink); g.fillRect(x, (140 - H), 10, H); g.setColor(Color.green); g.fillRect(x, 140, 10, H); Counter++; } } public void init() { setSize(500, 350); setBackground(Color.WHITE); add(button); add(text); button.addActionListener(new buttonHandler()); } int c = 0; public void paint(Graphics g) { c++; displayRectangles(g); if(c < 20) { repaint(); } } int count = 0; class buttonHandler implements ActionListener{ public void actionPerformed(ActionEvent e){ count ++; button.setLabel("pass " + count); if(e.getActionCommand()=="pass") repaint(); } } } 最終的にはボタンをクリックするたびに、長方形の長さが右側になるにつれて大きくなってソートされます。 http://hills.ccsf.cc.ca.us/~cconner/Java/Sorts/SortsWithButton.html どうしたら良いのかどうしても分かりません。 よろしくお願い致します。

    • ベストアンサー
    • Java
  • コンパイル時のエラーの件

    html上にJavaを表示させようとして、いちばん簡単なプログラム以下を作りました import java.applet.Applet; import java.awt.Graphics; public class hello extends Applet { public void paint (Graphics g ) { g.drawsString ("Hello Java Applet !",20,20); } } その後コンパイルしようとしたのですが、次のようなエラーメッセージが現れました。(特に.awtというのが全くわからないのです。) hello.java:1: シンボルを解釈処理できません。 シンボル: クラス applet 位置 : java の クラス import java.applet.applet; ^ hello.java:2: シンボルを解釈処理できません。 シンボル: クラス awt 位置 : java の クラス import java.awt.graphics; ^ hello.java:4: シンボルを解釈処理できません。 シンボル: クラス applet 位置 : hello の クラス public class hello extends applet { ^ hello.java:5: シンボルを解釈処理できません。 シンボル: クラス graphics 位置 : hello の クラス public void paint (graphics g ) { ^ なにか設定などがおかしいのでしょうか?教えてください。

    • ベストアンサー
    • Java
  • javaアプレットでのy=x^2のグラフ

    javaアプレットでy=x^2のグラフを描写したいのですが、現在の状態ではグラフの右側しか画面に現れません。軸の移動をすればよいと思うのですが、どのように修正すればよいのでしょうか? import java.applet.Applet; import java.awt.Graphics; import java.awt.Color; public class test1 extends Applet{ public void paint(Graphics g){ g.setColor(Color.red); int x,yp=100,xp=0; for(x=0;x<200;x++){ int y=(int)(x*x)*(-1)+100; g.drawLine(xp,yp,x,y); xp = x; yp = y; } } }

  • Appletが動きません・・・

    こんにちは。今日Javaを学び始めた超初心者です。 -HelloApplet.java-------------------------- import java.awt.Graphics; import java.applet.Applet; class HelloApplet extends Applet{ public void paint(Graphics g){ g.drawString("Hello World", 50,25); } } ------------------------------------------- で、これをコンパイルしてHTMLに組み込み、Appletviewerで見てみるのですが、 以下のようなメッセージが出ます。 ---------------------------------------------- C:\java>appletviewer hello.html load: HelloApplet.class は public ではありません。あるいは public なコンストラク タを持っていません。 java.lang.IllegalAccessException: Class sun.applet.AppletPanel can not access a member of class HelloApplet with modifiers "" at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:57) at java.lang.Class.newInstance0(Class.java:302) at java.lang.Class.newInstance0(Class.java:302) at java.lang.Class.newInstance(Class.java:261) at sun.applet.AppletPanel.createApplet(AppletPanel.java:617) at sun.applet.AppletPanel.runLoader(AppletPanel.java:546) at sun.applet.AppletPanel.run(AppletPanel.java:298) at java.lang.Thread.run(Thread.java:534) ---------------------------------------------- HTMLを開くと赤い「×」が出ています。 環境ですが、 CLASSPATH:C:\j2sdk1.4.2_04\lib\tools.jar;.;c:\java PATH:C:\WINDOWS;C:\WINDOWS\COMMAND;C:\j2sdk1.4.2_04\bin 作業フォルダ: c:\java となっています。 おかしいところはないと思うのですけど・・・。 宜しくお願い致します。

    • ベストアンサー
    • Java