【发布时间】:2014-04-08 22:45:28
【问题描述】:
下面的代码有问题。如果我将图像直接加载到 JPanel 中,我可以看到它。但是,当我尝试在 JPanel 上绘制 BufferedImage 之前先将其绘制到 BufferedImage 时,图像不可见。我做错了什么?
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
import java.awt.*;
import javax.swing.JPanel;
/**
*
* @author Duafeb
*/
public class RTester {
BufferedImage backBuffer;
Graphics2D g2;
Pane pain;
Image img;
public RTester(){
JFrame frame=new JFrame("Sprite Tester");
frame.setSize(1200, 700);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
backBuffer= new BufferedImage(1200,700,BufferedImage.TYPE_INT_RGB);
g2=backBuffer.createGraphics();
pain=new Pane();
frame.add(pain);
Toolkit tk=Toolkit.getDefaultToolkit();
img=tk.getImage(this.getClass().getResource("running.png"));
frame.setVisible(true);
}
public class Pane extends JPanel{
@Override
public void paintComponent(Graphics g){
Graphics2D g3=(Graphics2D)g;
g3.drawImage(backBuffer, 0, 0, this);
}
}
public void display(){
g2.setColor(Color.yellow);
g2.fillRect(0, 0, pain.getWidth(), pain.getHeight());
g2.drawImage(img, 0, 0, pain);
pain.repaint();
}
public static void main(String[] args){
RTester test=new RTester();
test.display();
}
}
【问题讨论】:
-
@Reimeus 我不是故意让你删除你的答案,我的 cmets 只是观察,经过一些测试,我认为你在正确的轨道上......
-
@Reimeus 我相信你的答案是正确的。如果您恢复它,我很乐意为它投票。
标签: java swing jpanel bufferedimage