【发布时间】:2012-02-25 15:11:01
【问题描述】:
import java.awt.*;
import javax.swing.*;
public class Main
{
JFrame jf;
Main()
{
jf=new JFrame();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.add(new MyCanvas());
jf.pack();
jf.setVisible(true);
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
new Main();
}
});
}
}
class MyCanvas extends JComponent
{
Image img;
MyCanvas()
{
setPreferredSize(new Dimension(200,200));
img=Toolkit.getDefaultToolkit().createImage("1.jpg");
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(img,0,0,null);
}
}
我想用自己的paintComponent 方法获取画布,但有时我会看到没有图像的空窗口。我需要调整窗口大小才能看到这个图像。什么是问题?为什么drawImage有时不画?
【问题讨论】:
-
调整窗口大小以重新绘制。我的疯狂猜测是,当您最初绘制窗口时,图像尚未加载。
-
@ZeissS 即
Toolkit.getDefaultToolkit().createImage("1.jpg");即使没有完整加载图像,此方法也会返回?
标签: java image swing jcomponent paintcomponent