2011-01-24 7 views
0

ジャップレットに画像が表示されません。JAppletにBufferedImageを表示する方法

public void setCharacter(String type) 
{ 
    try 
    { 
    character = ImageIO.read(new File(type)); 
    } 
    catch (Exception e) 
    { 
    e.printStackTrace(); 
    } 
} 

これがファイルの取得方法です。

public void paint(Graphics g) { 
    Graphics2D g2 = (Graphics2D) g; 

    g2.setBackground(Color.BLACK); 

    switch (manipulateCase) 
    { 
    case 0: 
    g2.setColor(Color.BLACK); 
    g2.fill(new Rectangle(0, 0, xBound, yBound)); // painting the background. 
    break; 

    case 1: 
    normandy.delete(g2); // delete previous position 
    ImageIcon stuff = new ImageIcon("spaceship.jpg"); 
    stuff.paintIcon(this, g2, 0, 0); 
    //g2.drawImage(normandy.getImage(), normandy.getBounds().x, normandy.getBounds().y, null); // draw new position 
    break; 

    /*case 2: 
    for (int i = 0; i < aLevel.getInvaders().length; i++) { 
    g2.fill(aLevel.getInvaders()[i].getCharacter()); 
    } 
    break; 

    case 3: 
    g2.setColor(Color.WHITE); 

    if (bullets.getBullets().size() > 0) 
    for (int i = 0; i < bullets.getBullets().size(); i++) { 
     g2.fill(bullets.getBullets().get(i).getBullet()); 
     System.out.println("BULLETS: " 
     + bullets.getBullets().size()); 
    } 
    break; 

    case 4: 
    break; */ 
    } 

} 

上記のコードは、アプレットに記載されています。

私は間違っていますか?なぜエラーが出るのですか? "入力ファイルを読み込めません!"

ご協力いただければ幸いです。

は、 blargmanファイルが存在するん

+0

私は人々がまだアプレットを使用しているのを知らなかったのですか? – VoodooChild

+0

@ VoodooChild - これはステートメントか質問ですか?それを質問として取り上げる。もちろん彼らはそうです!実際、新世代のプラグイン(ドラッグ可能なアプレットやJNLPサービスへのアクセスを含む)で導入された余分な機能が盛り込まれているため、埋め込みアプレットへの関心が高まっています。 –

+1

maaartinusのアドバイスに加えて、1)paint()/ paintComponent()メソッドでイメージをロードしないでください。代わりにinit()でロードし、それらをクラスレベルの属性としてキャッシュしてください。 2)トップレベルのSwingコンテナの塗装()をオーバーライドしないでください。代わりにJComponentで行い、paintComponent()をオーバーライドします。これにより、混乱が避けられ、カスタマイズされたコンポーネントの配置場所や他のGUIコントロールを追加することができるようになりました。 –

答えて

1

をいただき、ありがとうございますか!ブラウザで実行中のアプレットは、コンピュータ上のファイルを読み取ることができません。URLを介してアクセスすることができます。それはリモートコンピュータ上のファイルにアクセスすることができますが、(通常の理由で)許可されていません。したがってnew ImageIcon(String filename)new ImageIcon(URL location)に置き換えてください。

+0

URLがありません。私の先生は、自分のサイトで動作するアプレットを作ってほしいと思っています。パッケージ内のファイルにアクセスする方法はありますか? – nambvarun

+0

あなたは常にURLを持っています。イメージがクラスと同じディレクトリにある場合は、 'getClass()。getResource(" spaceship.jpg ")を使用します。 CLASSPATHのディレクトリ・リスンに存在する場合は、先頭のスラッシュを追加します。他の場所にある場合はパス名を使用してください。 http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Class.html#getResource(java.lang.String)を参照してください。アプレットの起動方法に関係なく、この方法で動作します。 – maaartinus

+0

アイコンの代わりにBufferedImageを使用できますか? – nambvarun

-1

paint()メソッドをオーバーライドしてカスタムペイントしないでください。

まず、アプレットの作成の詳細については、How to Make AppletsのSwingチュートリアルのセクションを読んでください。 「アプレットに画像を読み込む」セクションもあります。

また、絵を描く方法を学ぶことに同意するのは、JFrameを使用する単純なアプリケーションで練習するほうが簡単です。 Swingチュートリアルの「カスタムペインティング」のセクションを読んでください。チュートリアルには素晴らしい情報と例がたくさんあります。

+0

うん...それは面白いようです。しかし、カバーされている概念のいくつかは私のために少し進歩しています。彼らが話す概念の半分は理解できません。 – nambvarun

+0

はい、簡単ではありませんが、遅かれ早かれそれが必要になります。 'paint'のオーバーライドに関しては、代わりに' paintComponent'をオーバーライドしてください。 – maaartinus

+0

オブジェクトは「JApplet」であるとの質問があります。 'JApplet'は' paintComponent'を持っていません(なぜなら 'JPanel'ではなく' Applet'を拡張しているからです)。疑問にデザインの匂いがあるなら、彼はカスタムを追加するのではなく、それへのコンポーネント。 – finnw

関連する問題