【问题标题】:drawImage() doesn't drawdrawImage() 不绘制
【发布时间】: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


【解决方案1】:

改变

g.drawImage(img,0,0,null);

g.drawImage(img,0,0,this);

你应该很高兴。

【讨论】:

  • 我不认为这会解决他的问题,但我们将不得不等着看@eXXXXX ...要说什么。
  • 是的,假设他的图像是可加载的,它看起来就像调整大小后出现的那样。让我们看看 OP 怎么说。
  • +1 可以,尽管ImageIO 可能是更好的选择。注意JCompomponent 默认opacity
  • @trashgod:你仍然想提供一个有效的 ImageObserver
  • @stryba:JComponent 实现还不够吗?
猜你喜欢
  • 2015-08-09
  • 1970-01-01
  • 2012-12-18
  • 2011-04-20
  • 2017-08-14
  • 1970-01-01
  • 1970-01-01
  • 2013-03-08
  • 2015-11-01
相关资源
最近更新 更多