gpt4 book ai didi

java - 缓冲图像不会加载到 JPanel 对象上

转载 作者:太空宇宙 更新时间:2023-11-04 13:56:44 25 4
gpt4 key购买 nike

public BufferedImage createImage(JPanel panel) {
//Get top-left coordinate of drawPanel w.r.t screen
Point p = new Point(0, 0);
SwingUtilities.convertPointToScreen(p, panel);

//Get the region with width and height of panel and
// starting coordinates of p.x and p.y
Rectangle region = panel.getBounds();
region.x = p.x;
region.y = p.y;

//Get screen capture over the area of region
BufferedImage bi = null;
try {
bi = new Robot().createScreenCapture( region );
} catch (AWTException ex) {
Logger.getLogger(MyPaintBrush.class.getName()).log(Level.SEVERE, null, ex);
}
return bi;
}

现在,我希望能够将图像加载回 JPanel drawPanel 上。以下是我的尝试,但它不起作用:

try {
BufferedImage img = ImageIO.read(new File("D:\\Work Space\\Java\\Eclipse\\MyPaintBrush\\MyImage.png"));
JLabel picLabel = new JLabel(new ImageIcon(img));
drawPanel.add(picLabel);
} catch (IOException e) {
e.printStackTrace();
}

请告诉我它是如何完成的。

最佳答案

您需要更改创建 url 对象的方法。

URL url = getClass().getResource(saveImage);

getResource() 方法不是为访问磁盘上的文件而设计的,而是为访问 jar/war 中的文件而设计的。我会跳过这一行并直接打开一个文件,因为它位于文件系统上:

 BufferedImage img = ImageIO.read(new File("/path/to/file/name.png"));

请记住为您的文件系统使用正确的路径格式。

关于java - 缓冲图像不会加载到 JPanel 对象上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29748581/

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