0

これが私がしていることのコードです:

import java.net.*;
import java.applet.*;
import javax.swing.*;
import java.io.*;
import java.awt.*;
import javax.sound.sampled.AudioFileFormat;
class GraphicsProgram extends Canvas
{
public GraphicsProgram()
{ setSize(200, 200);
setBackground(Color.PINK);
}
public static AudioFileFormat ee;
public static AudioClip ss;
public class NEW extends JApplet {
public void init() {
  ss = Applet.newAudioClip(Get_Location("/pj1/anarkali.wav"));
  ss.play();}

public URL Get_Location(String filename)
{
    URL url = null;
    try{ url=this.getClass().getResource(filename);

    }
    catch(Exception e){}
    return url;
  }
  }
   public static void main(String[] argS)
    {
GraphicsProgram GP = new GraphicsProgram();
//create a new frame to which we will add a canvas
Frame aFrame = new Frame(); aFrame.setSize(800, 800);
//add the canvas
aFrame.add(GP);
aFrame.setVisible(true); }
public void paint(Graphics g)
{
Image img01 = Toolkit.getDefaultToolkit().getImage("e:\\m.gif");
g.drawImage(img01, 110, 140, this);
Image img0 = Toolkit.getDefaultToolkit().getImage("e:\\m10.jpg");
g.drawImage(img0, 100, 140, this);
Image img2 = Toolkit.getDefaultToolkit().getImage("e:\\m2.gif");
g.drawImage(img2, 200, 140, this);
NEW ss=new NEW();
ss.init();
}
    }

取得しているもの:スレッド「AWT-EventQueue-0」の例外java.lang.OutOfMemoryError:Javaヒープスペース

それでも、私はそれを実行することができます、それは音を再生し、画像を表示しています。この方法でそれは可能ですか?そしてなぜ私はヒープスペースエラーを取得するのですか?

4

1 に答える 1

5

各ペイントイベントで画像をロードしているため、この例外が発生しています。これは初期化時に 1 回だけ実行してから、ペイント メソッドで画像を再利用する必要があります。

NEW待ってください...そして、アプレット自体である新しいインスタンスを作成しているすべてのペイントイベントで。したがって、ヒープは大量のアプレットでいっぱいになり、それが問題になります。

于 2012-11-16T10:31:46.530 に答える