【问题标题】:How to display an image in a Java application如何在 Java 应用程序中显示图像
【发布时间】: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 添加更多内容后,它看起来会很好。
  • 我尝试添加越来越多的标签。我只是拖放它们。但只有图像显示..其他没有显示

标签: java image swing


【解决方案1】:

使用您提供的代码,您已经在名为lblimageJLabel 中拥有图像。您现在可以将其添加到面板或任何其他容器对象,如下所示:

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 IDEAGUI 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")));
        

        【讨论】:

          猜你喜欢
          • 2011-02-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-04
          • 2010-11-05
          • 2014-11-22
          • 2014-07-02
          • 1970-01-01
          相关资源
          最近更新 更多