- GUI
- Windows API tutorial
- Introduction to Windows API
- Windows API main functions
- System functions in Windows API
- Strings in Windows API
- Date & time in Windows API
- A window in Windows API
- First steps in UI
- Windows API menus
- Windows API dialogs
- Windows API controls I
- Windows API controls II
- Windows API controls III
- Advanced controls in Windows API
- Custom controls in Windows API
- The GDI in Windows API
- PyQt4 tutorial
- PyQt5 tutorial
- Qt4 tutorial
- Introduction to Qt4 toolkit
- Qt4 utility classes
- Strings in Qt4
- Date and time in Qt4
- Working with files and directories in Qt4
- First programs in Qt4
- Menus and toolbars in Qt4
- Layout management in Qt4
- Events and signals in Qt4
- Qt4 Widgets
- Qt4 Widgets II
- Painting in Qt4
- Custom widget in Qt4
- The Breakout game in Qt4
- Qt5 tutorial
- Introduction to Qt5 toolkit
- Strings in Qt5
- Date and time in Qt5
- Containers in Qt5
- Working with files and directories in Qt5
- First programs in Qt5
- Menus and toolbars in Qt5
- Layout management in Qt5
- Events and signals in Qt5
- Qt5 Widgets
- Qt5 Widgets II
- Painting in Qt5
- Custom widget in Qt5
- Snake in Qt5
- The Breakout game in Qt5
- PySide tutorial
- Tkinter tutorial
- Tcl/Tk tutorial
- Qt Quick tutorial
- Java Swing tutorial
- JavaFX tutorial
- Java SWT tutorial
- wxWidgets tutorial
- Introduction to wxWidgets
- wxWidgets helper classes
- First programs in wxWidgets
- Menus and toolbars in wxWidgets
- Layout management in wxWidgets
- Events in wxWidgets
- Dialogs in wxWidgets
- wxWidgets widgets
- wxWidgets widgets II
- Drag and Drop in wxWidgets
- Device Contexts in wxWidgets
- Custom widgets in wxWidgets
- The Tetris game in wxWidgets
- wxPython tutorial
- Introduction to wxPython
- First Steps
- Menus and toolbars
- Layout management in wxPython
- Events in wxPython
- wxPython dialogs
- Widgets
- Advanced widgets in wxPython
- Drag and drop in wxPython
- Internationalisation
- Application skeletons in wxPython
- The GDI
- Mapping modes
- Creating custom widgets
- Tips and Tricks
- wxPython Gripts
- The Tetris game in wxPython
- C# Winforms Mono tutorial
- Java Gnome tutorial
- Introduction to Java Gnome
- First steps in Java Gnome
- Layout management in Java Gnome
- Layout management II in Java Gnome
- Menus in Java Gnome
- Toolbars in Java Gnome
- Events in Java Gnome
- Widgets in Java Gnome
- Widgets II in Java Gnome
- Advanced widgets in Java Gnome
- Dialogs in Java Gnome
- Pango in Java Gnome
- Drawing with Cairo in Java Gnome
- Drawing with Cairo II
- Nibbles in Java Gnome
- QtJambi tutorial
- GTK+ tutorial
- Ruby GTK tutorial
- GTK# tutorial
- Visual Basic GTK# tutorial
- PyGTK tutorial
- Introduction to PyGTK
- First steps in PyGTK
- Layout management in PyGTK
- Menus in PyGTK
- Toolbars in PyGTK
- Signals & events in PyGTK
- Widgets in PyGTK
- Widgets II in PyGTK
- Advanced widgets in PyGTK
- Dialogs in PyGTK
- Pango
- Pango II
- Drawing with Cairo in PyGTK
- Drawing with Cairo II
- Snake game in PyGTK
- Custom widget in PyGTK
- PHP GTK tutorial
- C# Qyoto tutorial
- Ruby Qt tutorial
- Visual Basic Qyoto tutorial
- Mono IronPython Winforms tutorial
- Introduction
- First steps in IronPython Mono Winforms
- Layout management
- Menus and toolbars
- Basic Controls in Mono Winforms
- Basic Controls II in Mono Winforms
- Advanced Controls in Mono Winforms
- Dialogs
- Drag & drop in Mono Winforms
- Painting
- Painting II in IronPython Mono Winforms
- Snake in IronPython Mono Winforms
- The Tetris game in IronPython Mono Winforms
- FreeBASIC GTK tutorial
- Jython Swing tutorial
- JRuby Swing tutorial
- Visual Basic Winforms tutorial
- JavaScript GTK tutorial
- Ruby HTTPClient tutorial
- Ruby Faraday tutorial
- Ruby Net::HTTP tutorial
- Java 2D games tutorial
- Java 2D tutorial
- Cairo graphics tutorial
- PyCairo tutorial
- HTML5 canvas tutorial
- Python tutorial
- Python language
- Interactive Python
- Python lexical structure
- Python data types
- Strings in Python
- Python lists
- Python dictionaries
- Python operators
- Keywords in Python
- Functions in Python
- Files in Python
- Object-oriented programming in Python
- Modules
- Packages in Python
- Exceptions in Python
- Iterators and Generators
- Introspection in Python
- Ruby tutorial
- PHP tutorial
- Visual Basic tutorial
- Visual Basic
- Visual Basic lexical structure
- Basics
- Visual Basic data types
- Strings in Visual Basic
- Operators
- Flow control
- Visual Basic arrays
- Procedures & functions in Visual Basic
- Organizing code in Visual Basic
- Object-oriented programming
- Object-oriented programming II in Visual Basic
- Collections in Visual Basic
- Input & output
- Tcl tutorial
- C# tutorial
- Java tutorial
- AWK tutorial
- Jetty tutorial
- Tomcat Derby tutorial
- Jtwig tutorial
- Android tutorial
- Introduction to Android development
- First Android application
- Android Button widgets
- Android Intents
- Layout management in Android
- Android Spinner widget
- SeekBar widget
- Android ProgressBar widget
- Android ListView widget
- Android Pickers
- Android menus
- Dialogs
- Drawing in Android
- Java EE 5 tutorials
- Introduction
- Installing Java
- Installing NetBeans 6
- Java Application Servers
- Resin CGIServlet
- JavaServer Pages, (JSPs)
- Implicit objects in JSPs
- Shopping cart
- JSP & MySQL Database
- Java Servlets
- Sending email in a Servlet
- Creating a captcha in a Servlet
- DataSource & DriverManager
- Java Beans
- Custom JSP tags
- Object relational mapping with iBATIS
- Jsoup tutorial
- MySQL tutorial
- MySQL quick tutorial
- MySQL storage engines
- MySQL data types
- Creating, altering and dropping tables in MySQL
- MySQL expressions
- Inserting, updating, and deleting data in MySQL
- The SELECT statement in MySQL
- MySQL subqueries
- MySQL constraints
- Exporting and importing data in MySQL
- Joining tables in MySQL
- MySQL functions
- Views in MySQL
- Transactions in MySQL
- MySQL stored routines
- MySQL Python tutorial
- MySQL Perl tutorial
- MySQL C API programming tutorial
- MySQL Visual Basic tutorial
- MySQL PHP tutorial
- MySQL Java tutorial
- MySQL Ruby tutorial
- MySQL C# tutorial
- SQLite tutorial
- SQLite C tutorial
- SQLite PHP tutorial
- SQLite Python tutorial
- SQLite Perl tutorial
- SQLite Ruby tutorial
- SQLite C# tutorial
- SQLite Visual Basic tutorial
- PostgreSQL C tutorial
- PostgreSQL Python tutorial
- PostgreSQL Ruby tutorial
- PostgreSQL PHP tutorial
- PostgreSQL Java tutorial
- Apache Derby tutorial
- SQLAlchemy tutorial
- MongoDB PHP tutorial
- MongoDB Java tutorial
- MongoDB JavaScript tutorial
- MongoDB Ruby tutorial
- Spring JdbcTemplate tutorial
- JDBI tutorial
Displaying image in Java
In this tutorial, we show how to display an image in Java. We show how to build a project using command line tools, Ant, Maven, NetBeans, and Eclipse. The source code and the image are available at the author's Github repository .
Beginner programmers often have problems with displaying an image in a project. The problem lies in correctly identifying the path to the image file. The key part is to realize that the relative path to the image file starts from the project directory. This tutorial was created to make things clear.
The following example shows the screenshot of the application.

The source code
Here we provide the source code for displaying an image in Java.
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() { ImageIcon ii = new ImageIcon("src/images/snake.jpg"); return ii; } private void createLayout(JComponent... arg) { Container pane = getContentPane(); GroupLayout 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(() -> { DisplayImage ex = new DisplayImage(); ex.setVisible(true); }); } }
The example creates a Java Swing application and uses an ImageIcon
component to display the image.
private ImageIcon loadImage() { ImageIcon ii = new ImageIcon("src/images/snake.jpg"); return ii; }
The important part is here. The ImageIcon
takes the file path to the image. This file path depends on the build tool we use.
Displaying image with command line tools
The first example builds the Java application with command line tools.
$ mkdir bin $ mkdir -p src/main/com/zetcode/ $ mkdir src/main/images $ cp ~/Pictures/snake.jpg src/main/images/
We create the project structure and copy the image to the images directory.
private ImageIcon loadImage() { ImageIcon ii = new ImageIcon("src/main/images/snake.jpg"); return ii; }
In a command line application, we have used the src/main/images/snake.jpg
path.
$ tree . ├── bin └── src └── main ├── com │ └── zetcode │ └── DisplayImage.java └── images └── snake.jpg 6 directories, 2 files
This is how the project directory structure looks like.
$ javac -d bin src/main/com/zetcode/DisplayImage.java
The application is compiled with the javac
tool.
$ tree . ├── bin │ └── com │ └── zetcode │ └── DisplayImage.class └── src └── main ├── com │ └── zetcode │ └── DisplayImage.java └── images └── snake.jpg 8 directories, 3 files
After compiling the source code, we have a Java class file created in the bin/com/zetcode
subdirectory.
$ java -cp bin com.zetcode.DisplayImage
We run the application with the java
command.
Using Ant to build the project
In this section, we use the Ant build tool to create the project.
$ mkdir -p src/main/com/zetcode/ $ mkdir src/main/images $ cp ~/Pictures/snake.jpg src/main/images/
We create the directories and copy the image file.
$ tree . ├── build.xml └── src └── main ├── com │ └── zetcode │ └── DisplayImage.java └── images └── snake.jpg 5 directories, 3 files
With the tree
command, we show the directory structure of the project.
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>
This is the Ant build file. We have tasks for creating directories, compiling source code, and cleaning up.
private ImageIcon loadImage() { ImageIcon ii = new ImageIcon("src/main/images/snake.jpg"); return ii; }
We use the src/main/images/snake.jpg
path.
$ ant Buildfile: /home/janbodnar/prog/javaimages/displayimageant/build.xml init: compile: [javac] Compiling 1 source file to /home/janbodnar/prog/javaimages/displayimageant/build/classes BUILD SUCCESSFUL Total time: 2 seconds
We build the project.
$ java -cp build/classes/ com.zetcode.DisplayImage
The application is launched.
Displaying image in NetBeans
In NetBeans, we create a Java application.
We create a new folder. We right-click on the Source Packages and select New — Folder.

We call the folder images
. Its parent directory is src
. Using a drag and drop operation, we copy the snake.jpg
file to the images
subdirectory.
private ImageIcon loadImage() { ImageIcon ii = new ImageIcon("src/images/snake.jpg"); return ii; }
In NetBeans, we have used the src/images/snake.jpg
path.
System.out.println(System.getProperty("user.dir"));
The application's current working directory is the project directory, DisplayImageEx
in our case. We can figure out the current working directory with the user.dir
system property. The src
directory is a subdirectory of the project directory.

The figure show the actual project structure in NetBeans.
Displaying image in Eclipse
In Eclipse, we create a Java project. We right-click on the project node and select New — Source Folder.
We call the folder name images
. Unlike in NetBeans, its parent directory is the project folder. Using a drag and drop operation, we copy the snake.jpg
file to the images
subdirectory.
private ImageIcon loadImage() { ImageIcon ii = new ImageIcon("images/snake.jpg"); return ii; }
In Eclipse, we have used the images/snake.jpg
path.

The figure show the actual project structure in Eclipse.
This was the Displaying image in Java tutorial. We have built a Swing application that displays an image using command line tools, Ant, NetBeans, and Eclipse. You might also want to check the Java Swing tutorial , Java 2D tutorial , or Java Games tutorial .
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论