1
코드를 창에 표시하는 것과 같은 간단한 기능으로 축소했습니다. 그런데 왜 그림이 나타나지 않는데? JFrame을 만든 다음 그림을 보여줄 것으로 예상되는 JPanel을 만듭니다. 그런 다음 프레임에 패널을 추가하십시오. 그런데 그림을 가져 와서 URL을 얻기 위해 두 번 클릭했습니다.이미지가 창에 표시되지 않습니다.
import java.awt.*;
import javax.swing.*;
import com.sun.prism.Graphics;
public class GUI {
JFrame frame=new JFrame("My game");
JPanel gamePanel=new JPanel();
public static void main(String[] args){
GUI gui=new GUI();
gui.go();
}
public void go(){
frame.setSize(300, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Background backPic=new Background();
backPic.setVisible(true);
frame.getContentPane().add(backPic);
JPanel contentPane=(JPanel) frame.getContentPane();
contentPane.setOpaque(false);
frame.setVisible(true);
}
class Background extends JPanel{
public void paintComponent(Graphics g){
ImageIcon backgroundIcon=new ImageIcon("file:///E:/eclipse/EL/backgroundPicture.jpg");
Image backgroundPic=backgroundIcon.getImage();
Graphics2D g2D=(Graphics2D) g;
g2D.drawImage(backgroundPic,0,0,this);
}
}
}
새로운 방법 'paintComponent (com.sun.prism.Graphics)를 '제공과의 paintComponent (java.awt.Graphics)를 무시하지 않습니다 의미합니다. –
@DavidGilbert * "새로운 메소드를 제공한다는 의미입니다."* 오버라이드 된 메소드에서 @ @ Override가 지정되어야하는 한 가지 이유. 화물 열차가 도착하기 전에 우리가 잘못된 경로에 있다는 컴파일러 경고를 얻는 것이 편리합니다 .. –
그리고 그 말은 내가 그림을 가져와야한다는 것입니다, 그렇습니까? 가져온 그림을 삭제하면 다시 표시되지 않습니다. 그리고 "super.paintComponent (g)"의 기능은 무엇입니까? – EstellaGu