gpt4 book ai didi

java - 为什么 drawImage 不在 jframe 上绘制图像

转载 作者:行者123 更新时间:2023-11-30 07:13:25 24 4
gpt4 key购买 nike

当我试图在 JFrame 上显示图像时,它没有被加载。我在扩展类 JFrame 的类中定义了 displayImage(File file) 方法 -

public void displayImage(File file)
{
BufferedImage loadImg = StegImage.loadImage(file);
System.out.println(loadImg.getWidth() + "x" + loadImg.getHeight() + " image is loaded.");
setVisible(true);
setState(JFrame.NORMAL);
setBounds(0, 0, loadImg.getWidth(), loadImg.getHeight());
Graphics2D g = (Graphics2D)getRootPane().getGraphics();
System.out.println("Drawing the image.");
g.drawImage(loadImg, null, 0, 0);
}

我在终端上得到的输出是 -

877 x 587 image is loaded.
Drawing the image.

但在 Frame 中它是不可见的。

最佳答案

不应像您那样绘制或调用组件的图形。如果您需要自定义图形渲染,请使用具有 paintComponent 功能的 JComponentJPanel。覆盖它以在其中绘制。

class MyCanvas extends JComponent
{
public BufferedImage bgImg; // your background image

@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(bgImg, x, y, this); // draw background image
}
}
}

读取您的图像并在创建 MyCanvas 实例时将其分配给 bgImg。对于您的用例,您希望将图像用作 JFrame 的背景:将 MyCanvas 的实例作为内容 Pane 添加到 JFrame

 jFrame.setContentPane(new MyCanvas()); 
// you might want to set layout or other thing to the
// MyCanvas component before adding it

阅读一些在线教程,例如 custom graphics drawing and painting on component .

关于java - 为什么 drawImage 不在 jframe 上绘制图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19471901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com