我有兩個類。類GUI延伸JFrame
,並且應該在屏幕上顯示JPanel
,這是延伸JPanel
的類Surface。試圖以Java在屏幕上顯示圖像,不起作用
類Surface有一個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);
}
}
哪裏是你的PNG文件位於圖像位置問題?把它放到項目的根文件夾中。 –
永遠不會在paintComponent中加載圖像(ii = new ImageIcon(「redsquare.png」);),爲這個對象創建一個局部變量 – mKorbel
另外,這可以通過在50像素的JLabel中顯示圖像來實現'EmptyBorder'。 –