두 개의 클래스가 있습니다. 클래스 GUI는 JFrame
을 확장하고 JPanel
을 확장하는 Surface 클래스 인 JPanel
을 화면에 표시합니다.Java에서 화면에 이미지를 표시하려고하면 작동하지 않습니다.
클래스 표면에는 이미지를 표시해야하는 paintComponent 메서드가 있지만 어떤 이유로 그것을 표시하지 않습니다. 여기에 코드입니다 :
import javax.swing.*;
public class GUI extends JFrame {
GUI(){
initUI();
}
public void initUI(){
Surface s = new Surface();
add(s);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[]args){
GUI gui = new GUI();
gui.setVisible(true);
}
}
import java.awt.*;
import javax.swing.*;
public class Surface extends JPanel {
Image image;
ImageIcon ii;
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
ii = new ImageIcon("redsquare.png");
image = ii.getImage();
Dimension d = new Dimension();
d.width = image.getWidth(null);
d.height = image.getHeight(null);
this.setPreferredSize(d);
g2d.drawImage(image,50,50,null);
}
}
위치한 다양한 이미지 소스를 실행 해보십시오 보이는 이미지의 위치에 문제가 될 수 있습니까? 프로젝트 루트 폴더에 넣으십시오. –
paintComponent (ii = new ImageIcon ("redsquare.png");) 내부에 이미지를로드하지 마십시오.이 객체의 로컬 변수를 만듭니다. – mKorbel
제쳐두고, 이미지를 'JLabel'에 50px로 표시하면됩니다 'EmptyBorder'. –