import java.awt.*; import java.applet.*; class ImageComponent extends Component { protected Image image; protected int width; protected int height; protected MediaTracker tracker; public ImageComponent(Image image){ this.image = image; } public ImageComponent(String filename){ tracker = new MediaTracker(this); image = Toolkit.getDefaultToolkit().getImage(filename); loadImage(image); } public ImageComponent(Applet applet, String filename){ tracker = new MediaTracker(this); image = applet.getImage(applet.getDocumentBase(), filename); loadImage(image); } protected void loadImage(Image image){ // イメージの読み込み synchronized(tracker) { tracker.addImage(image, 0); try{ // イメージがロードされるまで待つ tracker.waitForID(0); }catch(InterruptedException e){ e.printStackTrace(); } tracker.removeImage(image, 0); width = image.getWidth(this); height = image.getHeight(this); setSize(width, height); } } public Dimension getPreferredSize(){ return getMinimumSize(); } public Dimension getMinimumSize(){ return new Dimension(width, height); } public int getWidth(){ return width; } public int getHeight(){ return height; } public void update(Graphics g){ paint(g); } public void paint(Graphics g){ g.drawImage(image, 0, 0, this); } }