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);
}
}
이 달렸다 프로그램에 도움을 주시면 크게 감사하겠습니다. 변경
* "제대로 작동하지 않습니다."* ** 어떤 일이 ** 일어나는지 설명하십시오! 그것은 이미지를 전혀로드하지 않습니까? 이미지가 이동 하나 화면에 '에코'가 있습니까? 그들은 창문을 부수고 지갑을 훔 칩니 까? .. –
' stars = new ImageIcon ("star.png") .getImage();'1) 애플리케이션 리소스는 배포 시점까지 임베디드 리소스가 될 것이므로 지금 당장 액세스하는 것이 현명하다. . [tag : embedded-resource]는 파일이 아닌 URL로 액세스해야합니다. [info. URL을 구성하는 방법은 임베디드 리소스 페이지 (http://stackoverflow.com/tags/embedded-resource/info)를 참조하십시오. 2) 이미지를 가리키는'URL'을 얻었 으면'ImageIO.read (URL)'을 사용하여 이미지를로드하십시오. 필요에 따라 사용할 수있는'BufferedImage' 또는 다른 유용한 정보를 제공합니다. –
'frame.setSize (새 치수 (800,800)); .. frame.setVisible (true);'이어야합니다 .. .. frame.pack(); frame.setVisible (true);' –