2016-04-25 7 views
0

こんにちはすべて私のアニメーションプログラムでは進歩していますが、私はalien.pngがjframeに表示されない問題に遭遇しています。私はこのアニメーションdemo.javaと同じフォルダにalien.pngを持っていますので、なぜalien.pngが見つからないのか分かりません。すべてのヘルプはpng画像でのアニメーションの問題

package animationdemo; 


import java.awt.Graphics; 
import java.awt.Image; 
import java.awt.Toolkit; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.File; 
import java.io.IOException; 
import javax.imageio.ImageIO; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.Timer; 

public class AnimationDemo extends JFrame { 
    Image alien; 
    public AnimationDemo() { 

    alien = Toolkit.getDefaultToolkit().getImage("alien.png"); 
    MovingMessagePanel messagePannel = new MovingMessagePanel(); 
    messagePannel.alien = this.alien; 
     Timer timer = new Timer(50, messagePannel); 
    timer.start(); 
    this.add(messagePannel); 
    } 
    public static void main(String[] args) { 
    AnimationDemo frame = new AnimationDemo(); 
    frame.setTitle("Project 10"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setSize(500, 500); 
    frame.setVisible(true); 
    } 

} 

class MovingMessagePanel extends JPanel implements ActionListener { 
    public int xCoordinate = 20; 
    public int yCoordinate = 20; 
    public int xDir=5; 
    public int yDir=5; 
    public Image alien; 

    public void actionPerformed(ActionEvent e) { 
    repaint(); 
    } 

    @Override 
    public void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    if (xCoordinate > getWidth()) xDir*=-1; 
    if (yCoordinate > getHeight()) yDir*=-1; 
    if (xCoordinate <0) xDir*=-1; 
    if (yCoordinate <0) yDir*=-1; 
    xCoordinate += xDir; 
    yCoordinate += yDir; 
    g.drawImage(alien,xCoordinate,yCoordinate,this); 
    } 
} 

答えて

1

いただければ幸いのは、コード行を見てみましょう:

package animationdemo; // this one! 

import java.awt.Graphics; 
// .. 

public class AnimationDemo extends JFrame { 
    Image alien; 
    public AnimationDemo() { 

    alien = Toolkit.getDefaultToolkit().getImage("alien.png"); // & this one! 

最後の行が効果的に「カレントディレクトリ」からFileをロードしようとしています。

しかし、画像はおそらくFileとしてアクセスできません。アプリケーションリソースは、デプロイメント時に埋め込まれたリソースになるので、今のようにアクセスすることをお勧めします。 には、ファイルではなくURLでアクセスする必要があります。 URLの作成方法については、info. page for embedded resourceをご覧ください。最初のハイライト部のラインを所定の

メモ、リソースを見つけるための最良の経路は、おそらく次のようになります

..getResource("/animationdemo/alien.png") 

も注意getResource方法は、大文字と小文字が区別されるので、..

..getResource("/animationdemo/alien.PNG") 

こと。 。小文字のバージョンを見つけることができず、その逆もありません。

alien = new BufferedImage(40, 40, BufferedImage.TYPE_INT_RGB); 
      //Toolkit.getDefaultToolkit().getImage("alien.png"); 

私はアニメーション黒い四角を見て考えると、それはサポートしています。余談として


は、私は上記のソースに、この小さな変更を行うことで、私の「欠落している画像」理論のチェックをしました大きな問題は、画像が見つからないことです。コードにはまだ微妙な部分がいくつかありますが、基本的に正しい方向に進んでいます。

+0

私はこれを試していたが、URLを見つけることができないと言っているエイリアン変数を宣言する方法が分かりません。alien = this.getClass()。getResource( "/ animationdemo /alien.png "); – ried

+0

IDEを使用していますか?もしそうなら、どちらですか?イメージは 'AnimationDemo.java'ソースファイルと同じ場所に保存されていますか? (これは、IDEを使用している場合、間違った場所です。) –