2016-06-01 5 views
1

3つのPNGを画面全体に移動させるシンプルなGUIを作成していますが、正しく動作しません。ここで 3つのPNGを画面上で動かす簡単なGUI - 正しく動作しない

は、私はいくつかの非常に簡単な当たり前の誤差があるかもしれないので、私はGUIとスイングに新たなんだ持っているコードであり、私はここに彼らのために謝罪あなたが行く:私はコンパイルした

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
public class MovingPictures extends JPanel implements ActionListener 
{ 
private Timer timer; 
Stars star; 
public MovingPictures() 
{ 
    setPreferredSize(new Dimension(800,800)); 

    timer = new Timer(1,this); 
    timer.addActionListener(this); 
    timer.start(); 
} 

public void paintComponent(Graphics g) 
{ 
    super.paintComponent(g); 
    g.drawImage(star.getStar(),star.getStarX(),star.getStarY(),null); 
    g.drawImage(star.getStar2(),star.getStar2X(),star.getStar2Y(),null); 
    g.drawImage(star.getStar3(),star.getStar3X(),star.getStar3Y(),null); 
} 

public void actionPerformed(ActionEvent e) 
{ 
    star.up(); 
    star.across(); 
    star.diagonal(); 
    repaint(); 
} 

public class Stars 
    { 
    private Image stars; 
    private Image stars2; 
    private Image stars3; 
    private int starX; 
    private int starY; 
    private int star2X; 
    private int star2Y; 
    private int star3X; 
    private int star3Y; 
    public Stars() 
     { 
     stars = new ImageIcon("star.png").getImage(); 
     stars2 = new ImageIcon("star2.png").getImage(); 
     stars3 = new ImageIcon("star3.png").getImage(); 
     starX = 0; 
     starY = 50; 
     star2X = 100; 
     star2Y = 0; 
     star3X = 0; 
     star3Y = 0; 
    } 

    public void up() 
    { 
     if(starY == 790) 
      starY = 0; 
     else 
      starY += 2; 

    } 

    public void across() 
    { 
     if(star2X == 790) 
      star2X = 0; 
     else 
      star2X +=2; 
    } 

    public void diagonal() 
    { 
     if (star3X == 790) 
     { 
      star3X=0; 
      star3Y =0; 
     } 
     else 
     { 
      star3X += 2; 
      star3Y += 2; 
     } 
    } 

    public int getStarX() 
    { 
     return starX; 
    } 

    public int getStarY() 
    { 
     return starY; 
    } 

    public int getStar2X() 
    { 
     return star2X; 
    } 

    public int getStar2Y() 
    { 
     return star2Y; 
    } 

    public int getStar3X() 
    { 
     return star3X; 
    } 

    public int getStar3Y() 
    { 
     return star3Y; 
    } 

    public Image getStar() 
    { 
     return stars; 
    } 

    public Image getStar2() 
    { 
     return stars2; 
    } 

    public Image getStar3() 
    { 
     return stars3; 
    } 

} 
public static void main(String[] args) 
{ 
    JFrame frame = new JFrame(); 
    frame.setTitle(" Star Field "); 
    frame.setSize(new Dimension(800,800)); 
    frame.setLocationRelativeTo(null); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    MovingPictures panel = new MovingPictures(); 
    frame.add(panel); 
    panel.setBackground(Color.BLACK); 
    frame.setVisible(true); 


} 
} 

、これを実行しましたもしあなたが何か助けを借りているなら、それは非常に高く評価されるでしょう。変更

+0

*「正しく動作していません」* **何が起こっているかを説明してください**!それは全く画像をロードしますか?画像は移動しますが、画面には「エコー」がありますか?彼らは窓を壊して財布を盗みますか? .. –

+0

'stars = new ImageIcon(" star.png ")。getImage();' 1)アプリケーションリソースは、デプロイメント時に埋め込まれたリソースになるので、今のようにアクセスすることをお勧めします。 [タグ:埋め込みリソース]は、ファイルではなくURLでアクセスする必要があります。 [info。埋め込みリソースのページ](http://stackoverflow.com/tags/embedded-resource/info)を参照してください。 2)イメージを指し示す 'URL'を取得したら、' ImageIO.read(URL) 'を使ってイメージをロードします。必要に応じて使用できる' BufferedImage'を提供します。 –

+0

'frame.setSize(新しい次元(800,800)); frame.setVisible(true); 'は' .. frame.pack();にする必要があります。 frame.setVisible(true); ' –

答えて

2

注こと:

Stars star; 

へ:

Stars star = new Stars(); 

は、それがインスタンス化される前に参照されてstarた結果NullPointerExceptionを防ぎ/作成しました。

関連する問題