ZetCode

在 Java 中显示图像

最后修改于 2024 年 1 月 27 日

在 Java 中显示图像教程展示了如何在 Java 中显示图像。

初学者程序员经常在项目中显示图像时遇到问题。问题在于正确识别图像文件的路径。关键是要意识到图像文件的相对路径从项目目录开始。创建本教程是为了使事情清晰明了。

显示图像示例

这里我们提供了在 Java 中显示图像的源代码。

com/zetcode/DisplayImage.java
package com.zetcode;

import java.awt.Container;
import java.awt.EventQueue;
import javax.swing.GroupLayout;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class DisplayImage extends JFrame {

    public DisplayImage() {

        initUI();
    }

    private void initUI() {

        ImageIcon ii = loadImage();

        JLabel label = new JLabel(ii);

        createLayout(label);

        setTitle("Image");
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    private ImageIcon loadImage() {

        var ii = new ImageIcon("src/main/resources/sid.png");
        return ii;
    }

    private void createLayout(JComponent... arg) {

        Container pane = getContentPane();
        var gl = new GroupLayout(pane);
        pane.setLayout(gl);

        gl.setAutoCreateContainerGaps(true);

        gl.setHorizontalGroup(gl.createSequentialGroup()
                .addComponent(arg[0])
        );

        gl.setVerticalGroup(gl.createParallelGroup()
                .addComponent(arg[0])
        );

        pack();
    }

    public static void main(String[] args) {

        EventQueue.invokeLater(() -> {

            var ex = new DisplayImage();
            ex.setVisible(true);
        });
    }
}

该示例创建了一个 Java Swing 应用程序,并使用 ImageIcon 组件来显示图像。

private ImageIcon loadImage() {

    var ii = new ImageIcon("src/main/resources/sid.png");
    return ii;
}

重要的部分在这里。ImageIcon 接受图像的文件路径。此文件路径取决于我们使用的构建工具。

使用命令行工具显示图像

第一个示例使用命令行工具构建 Java 应用程序。

src
└── main
    ├── java
    │   └── com
    │       └── zetcode
    │           └── DisplayImage.java
    └── resources
        └── sid.png

这是项目结构。

$ javac src/main/java/com/zetcode/DisplayImage.java -d bin

该应用程序使用 javac 工具编译。

bin
│ └── com
│     └── zetcode
│         └── DisplayImage.class
└── src
    └── main
        ├── java
        │   └── com
        │       └── zetcode
        │           └── DisplayImage.java
        └── resources
            └── sid.png

编译源代码后,我们在 bin/com/zetcode 子目录中创建了一个 Java 类文件。

$ java -cp bin com.zetcode.DisplayImage

我们使用 java 命令运行该应用程序。

使用 Ant 构建项目

在本节中,我们使用 Ant 构建工具来创建项目。

build.xml
src
└── main
    ├── java
    │   └── com
    │       └── zetcode
    │           └── DisplayImage.java
    └── resources
        └── sid.png

这是项目结构。

build.xml
<?xml version="1.0"?>
<project name="DisplayImage" default="compile">

  <target name="init">
        <mkdir dir="build/classes"/>
  </target>

  <target name="compile" depends="init">
        <javac includeantruntime="false" srcdir="src" destdir="build/classes"/>
  </target>

  <target name="clean">
        <delete dir="build"/>
  </target>
</project>

这是 Ant 构建文件。我们有用于创建目录、编译源代码和清理的任务。

$ ant
Buildfile: /home/jano/Documents/prog/java/display-image/ant-ver/build.xml

init:
    [mkdir] Created dir: /home/jano/Documents/prog/java/display-image/ant-ver/build/classes

compile:
    [javac] Compiling 1 source file to /home/jano/Documents/prog/java/display-image/ant-ver/build/classes

BUILD SUCCESSFUL
Total time: 0 seconds

我们构建项目。

$ java -cp build/classes/ com.zetcode.DisplayImage

我们运行该程序。

使用 IntelliJ IDEA

我们创建一个 Maven/Gradle 应用程序,并将图像复制到 resources 文件夹中。

Using IntelliJ IDEA
图:使用 IntelliJ IDEA

创建源文件并复制图像后,我们可以运行该程序。

来源

java 读取/加载图像 - 教程

在本文中,我们展示了如何在 Java 中显示图像。

作者

我叫 Jan Bodnar,是一位充满热情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直在撰写编程文章。到目前为止,我已经撰写了 1,400 多篇文章和 8 本电子书。我拥有超过十年的编程教学经验。

列出所有Java教程