0

次のコードがあります。線、四角形、楕円形、および文字列が正しく表示されますが、画像は読み込まれません。画像は正しいディレクトリにありますが、表示されない理由がわかりません...

import java.awt.*;  // for Graphics, Image, and Color classes
import java.applet.Applet;

public class GraphicsDemo extends Applet
{

    public void paint (Graphics g)
    {
        Image image;
        image = this.getImage(getDocumentBase (), "flower.jpg");

        // display smaller complete image in upper left corner of window
        g.drawImage(image, 0, 0, 427, 284,      // destination topL, botR
                0, 0, 640, 427, this);      // source topL, botR

        // establish color of all lines to be drawn
        g.setColor(Color.BLUE);

        // draw rectangle around region to be expanded
        g.drawRect(200, 60, 120, 120);          // topL, width & height

        // draw lines between corners of rectangles
        g.drawLine(200, 60, 240, 240);          // upper left
        g.drawLine(320, 60, 600, 240);          // upper right
        g.drawLine(200, 180, 240, 600);         // lower left
        g.drawLine(320, 180, 600, 600);         // lower right

        // display expanded part of original image
        g.drawImage(image, 240, 240, 600, 600,  // destination topL, botR
                300, 90, 480, 270, this);   // source topL, botR

        // draw rectangle around expanded part of image
        g.drawRect(240, 240, 360, 360);         // topL, width & height

        // create BLUE colored oval and write name on it
        g.fillOval(520, 380, 45, 30);           // topL, width & height
        g.setColor(Color.WHITE);            // change color for text
        g.drawString("Max", 530, 400);          // string & start position

    }   // end main
}   // end class GraphicsDemo
4

1 に答える 1

0

ほとんどの場合、画像はドキュメント ベースに存在しません。コードの残りの部分は機能的に問題ありません。次のように init メソッドを追加します。

public void init() {
    System.out.println(getDocumentBase());
}

そこにある画像を表示された場所にコピーします。


関連するメモ:

からのこのステートメントがありませんpaint

super.paint(g);

また、このステートメントを移動することをお勧めします

image = this.getImage(getDocumentBase (), "flower.jpg");

initアプレットがペイントされるたびにイメージがロードされないように、アプレットのメソッドに追加します。

于 2013-08-06T18:20:00.287 に答える