【发布时间】:2013-12-23 07:28:00
【问题描述】:
我有两节课。 GUI 类扩展了JFrame,应该在屏幕上显示JPanel,这是扩展JPanel 的Surface 类。
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");),为此对象创建一个局部变量
-
顺便说一句,这可以通过将图像显示在
JLabel和50pxEmptyBorder中来实现。
标签: java image swing embedded-resource imageicon