【发布时间】:2018-05-28 11:32:41
【问题描述】:
我正在尝试在 JFrame 上绘制图像,但它似乎不起作用。这是绘制图像的面板:
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
public class GraphicsPanel extends JPanel {
public BufferedImage image;
public GraphicsPanel(){
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, null);
}
}
这是 JFrame:
import java.awt.Dimension;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class Spelplan extends javax.swing.JFrame {
public static BufferedImage image;
public static GraphicsPanel pane;
public Spelplan() {
try {
image = ImageIO.read(new File("*IMAGE PATH*"));
}
catch(IOException e) {
System.out.println("Image not found");
}
pane = new GraphicsPanel();
pane.setPreferredSize(new Dimension(image.getWidth(), image.getHeight()));
pane.setVisible(true);
initComponents();
this.setPreferredSize(new Dimension(image.getWidth(), image.getHeight()));
this.add(pane);
this.pack();
pane.repaint();
}
当程序运行时,JFrame 以正确的大小显示,但没有绘制图像。知道我做错了什么吗?
【问题讨论】:
-
您似乎从未加载任何要绘制的图像?你只需将它加载到你的
Spelplan类中,除了使用它的大小之外,它什么都不做。您可能应该使用g.drawImage(Spelplan.image, [...] -
欢迎来到 SO。你得到什么错误?我没有看到
GraphicsPanel中的image被初始化。您可能希望将构造函数更改为GraphicsPanel(BufferedImage image) -
@c0der 我没有收到任何错误,但是图像从未绘制。图像在 JFrame 中初始化并且是公开的。
-
@Ben 我使用面板中的图像来绘制它。
-
你为什么不使用
JLabel呢?
标签: java swing jframe paintcomponent