如何在 Java 应用程序中显示图像
Posted
技术标签:
【中文标题】如何在 Java 应用程序中显示图像【英文标题】:How to display an image in a Java application 【发布时间】:2011-02-25 23:39:36 【问题描述】:我想在我的 Java 应用程序中显示图像。我找到了从网络服务器下载图像并将其显示在 jframe 中的代码。
我想使用标签来显示图像或其他内容。它不应该是 JFrame。
这是我的代码:
Image image = null;
try
URL url = new URL(
"http://www.personal.psu.edu/acr117/blogs/audrey/images/image-2.jpg");
image = ImageIO.read(url);
catch (IOException e)
// Use a label to display the image
JFrame frame = new JFrame();
JLabel lblimage = new JLabel(new ImageIcon(image));
frame.getContentPane().add(lblimage, BorderLayout.CENTER);
frame.setSize(300, 400);
frame.setVisible(true);
有人可以帮我吗?
【问题讨论】:
您的代码是否有效?你试过了吗?如果它不起作用,那么出了什么问题 - 您是否收到错误消息,或者它看起来不像您期望的那样?您提供的详细信息越多,人们就能为您提供更好的帮助。 代码完全符合您的描述。图像显示在标签 lblimage 中。您可以将标签放在 JPane 中,它会起作用。你认为什么不起作用? 没有它的工作正常。但它显示在框架中。但我希望这张图片显示在标签或其他东西中。所以我可以调整大小和所有。我想将此图像放在我的应用程序的特定区域。请帮帮我 标签是框架中唯一的东西,所以它占据了整个框架。向 GUI 添加更多内容后,它看起来会很好。 我尝试添加越来越多的标签。我只是拖放它们。但只有图像显示..其他没有显示 【参考方案1】:使用您提供的代码,您已经在名为lblimage
的JLabel
中拥有图像。您现在可以将其添加到面板或任何其他容器对象,如下所示:
JPanel mainPanel = new JPanel(new BorderLayout());
mainPanel.add(lblimage);
// add more components here
frame.add(mainPanel);
frame.setVisible(true);
您可以像对待任何普通组件一样对待该标签 (lblimage
)。
【讨论】:
我尝试拖放一个面板并使此代码适应它。但不工作。我想在我的 GUI 中添加越来越多的项目(按钮和标签)。你能帮帮我吗【参考方案2】:您可以尝试这样做:
import javax.swing.ImageIcon;
...
JLabel image = new JLabel(new ImageIcon("imageName.png"));
...
frame.add(image);
我发现这样做更容易:D
编辑:第四次阅读该问题后,我意识到这正是您在问题中所做的。现在,我很难弄清楚你到底想要什么。
【讨论】:
我的问题是这个。我已经在我的标签中添加了一张图片。但它没有显示。标签来自拖放。所以我想当我的应用程序运行时标签应该显示图像。另一件事是它不应该占用整个 GUI。使用 jframe 它的作用是占用整个框架,所以我什至无法添加任何其他按钮或标签 不应该占用整个 GUI 是什么意思?通过拖放,你的意思是你正在使用另一个程序来制作 GUI?如果图像没有显示,您可能需要做的是将包含图像的 JLabel 放入 JPanel,然后告诉 JPanel 执行 updateUI(); (我想。我仍然不确定你的问题是什么。) 我有更多的按钮和标签。所有这些都不是由代码创建的。我已将它们拖放到表单中。 这就是令人困惑的地方;您使用什么程序将它们拖放到表单中?你所说的形式是什么意思?您是否正在构建一个拖放组件的程序?【参考方案3】:我会在其他有用的答案中添加两个注释:
1) 不要吞下异常;写入日志或至少打印堆栈跟踪。
catch (IOException e) e.printStackTrace();
2) 不要写frame.setSize(300, 400)
,而是使用pack()
,这会“导致此Window
的大小适合其子组件的首选大小和布局。”这样,将使用图片的原始尺寸。这也是@camickr 建议阅读布局管理器的基础。
【讨论】:
【参考方案4】:您的代码已经完成了您需要的工作(在 JFrame 以外的地方显示它 - 那是 JLabel - )
对于您在 cmets 中所说的,尝试拖放并添加更多组件我认为您需要使用 GUI BUilder 来实现您想要的(不仅显示图像,而且添加其他组件)
我建议你使用IntelliJ IDEA的GUI Builder
为了全面了解 Swing 的工作原理以及您可以使用它,您还可以查看:The swing tutorial
【讨论】:
【参考方案5】:我想添加越来越多的项目 (按钮和标签)到我的 GUI。能够 请帮帮我
您的问题与标签和图片无关。您需要了解如何使用布局管理器来组织您添加到框架的组件。
因此,首先阅读Layout Managers 上的 Swing 教程。您可以下载和使用大量示例。您还可以在不同的面板上嵌套不同的布局管理器。
【讨论】:
【参考方案6】:试试这个:
JLabel lblNewLabel_1 = new JLabel("");
lblNewLabel_1.setIcon(new ImageIcon(MainMenu.class.getResource("/Images/Bugs.png")));
【讨论】:
以上是关于如何在 Java 应用程序中显示图像的主要内容,如果未能解决你的问题,请参考以下文章
我将如何从AMD GPU的显示输出中获取图像数据? [处于保留状态]