The following code snippet demonstrates how to create a JTabbedPane
component with image icons attached on their tabs. There are two steps that we need to do to achieve this. First we need to load the image icon and after that we need to attach these icons to the tabs.
To create or load an image icon simply create an instance of ImageIcon
class. Pass the information about the image location to the constructor of the ImageIcon
. In the example below I provide the location of the image using the getClass().getResource()
method which will load the images from resources
directory.
To add a new tab with image icon attached to the tabs of a JTabbedPane
component we are using the addTab(String, Icon, Component)
method. The second argument in this method is the image icon of the tab.
Let’s see the code snippet below:
package org.kodejava.swing;
import javax.swing.*;
import java.awt.*;
import java.util.Objects;
public class TabbedPaneWithIcon extends JPanel {
private TabbedPaneWithIcon() {
initializeUI();
}
private static void showFrame() {
JPanel panel = new TabbedPaneWithIcon();
panel.setOpaque(true);
JFrame frame = new JFrame("Tabbed Pane With Icon Demo");
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setContentPane(panel);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(TabbedPaneWithIcon::showFrame);
}
private void initializeUI() {
this.setLayout(new BorderLayout());
this.setPreferredSize(new Dimension(500, 200));
JTabbedPane pane = new JTabbedPane();
ImageIcon tab1Icon = new ImageIcon(Objects.requireNonNull(
this.getClass().getResource("/images/test-pass-icon.png")));
ImageIcon tab2Icon = new ImageIcon(Objects.requireNonNull(
this.getClass().getResource("/images/test-fail-icon.png")));
ImageIcon tab3Icon = new ImageIcon(Objects.requireNonNull(
this.getClass().getResource("/images/test-error-icon.png")));
JPanel content1 = new JPanel();
JPanel content2 = new JPanel();
JPanel content3 = new JPanel();
pane.addTab("Pass", tab1Icon, content1);
pane.addTab("Fail", tab2Icon, content2);
pane.addTab("Error", tab3Icon, content3);
this.add(pane, BorderLayout.CENTER);
}
}
The directory structure of the project:
kodejava-swing
├─ pom.xml
└─ src
└─ main
├─ java
│ └─ org
│ └─ kodejava
│ └─ swing
│ └─ TabbedPaneWithIcon.java
└─ resources
└─ images
├─ test-error-icon.png
├─ test-fail-icon.png
└─ test-pass-icon.png
And here is the result of the code snippet above.
- How do I get number of each day for a certain month in Java? - September 8, 2024
- How do I get operating system process information using ProcessHandle? - July 22, 2024
- How do I sum a BigDecimal property of a list of objects using Java Stream API? - July 22, 2024
You did not include your packages and folders I am getting a huge roster of errors and I just copied and pasted your code.
Hi Aleks,
I’ve just upload the directory structure for you check here: Kodejava Swing Examples