1
我正在創建一個簡單的GUI,它可以在屏幕上移動3個PNG,但不能正常工作。在屏幕上移動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);
}
}
我編譯和運行這個程序如果你有任何幫助,將不勝感激。
*「但它工作不正常」*請描述**發生了什麼!它是否加載圖像?圖像是否移動,但屏幕上有「回聲」?他們是否粉碎窗戶並偷走你的錢包? .. –
'stars = new ImageIcon(「star.png」)。getImage();'1)應用程序資源在部署時將成爲嵌入式資源,所以開始訪問它們是明智的,就像現在一樣。 [tag:embedded-resource]必須通過URL而不是文件訪問。請參閱[信息。頁面爲嵌入式資源](http://stackoverflow.com/tags/embedded-resource/info)如何形成的URL。 2)一旦你有一個指向圖像的URL,使用'ImageIO.read(URL)'加載圖像,該圖像將提供一個可以根據需要使用的'BufferedImage',否則就會提供大量有用的信息。 –
'frame.setSize(new Dimension(800,800)); .. frame.setVisible(true);'應該是'.. frame.pack(); frame.setVisible(true);' –