到目前为止,这就是我所拥有的一切。我已经阅读了有关绘制和创建图像的oracle文档,但我仍然无法弄明白。
final BufferedImage image = ImageIO.read(new File("BeachRoad_double_size.png"));
final JPanel pane = new JPanel();
frame.add(pane);
int delay = 1000; //milliseconds
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
Graphics gg = image.getGraphics();
System.out.println("sdfs");
pane.paintComponents(gg);
//g.drawImage(image, 0, 0, null);
}
};
new Timer(delay, taskPerformer).start();
答案 0 :(得分:3)
paintComponent
,事实上,您永远不需要直接致电paint
相反。创建一个自定义组件,例如来自JPanel
之类的内容,覆盖它的paintComponent
方法并在那里执行所有自定义绘画......
public class ImagePane extends JPanel {
private BufferedImage bg;
public ImagePane(BufferedImage bg) {
this.bg = bg;
}
public Dimension getPreferredSize() {
return bg = null ? new Dimension(200, 200) : new Dimension(bg.getWidth(), bg.getHeight());
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (bg != null) {
g.drawImage(bg, 0, 0, this);
}
}
}
看看
了解更多详情