Java如何将图标添加到JTabbedPane选项卡?

以下代码段演示了如何创建一个JTabbedPane组件,这些组件的选项卡上带有图像图标。为此,我们需要执行两个步骤。首先,我们需要加载图像图标,然后,我们需要将这些图标附加到选项卡上。

要创建或加载图像图标,只需创建ImageIcon类的实例。将有关图像位置的信息传递给的构造函数ImageIcon。在下面的示例中,我使用getClass().getResource()将从resources目录中加载图像的方法提供图像的位置。

要添加一个带有图像图标的新标签,该标签附有JTabbedPane组件的标签,我们正在使用addTab(String, Icon, Component)方法。此方法中的第二个参数是选项卡的图像图标。

让我们看看下面的代码片段:

package org.nhooo.example.swing;

import javax.swing.*;
import java.awt.*;

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(new Runnable() {
            public void run() {
                TabbedPaneWithIcon.showFrame();
            }
        });
    }

    private void initializeUI() {
        this.setLayout(new BorderLayout());
        this.setPreferredSize(new Dimension(500, 200));

        JTabbedPane pane = new JTabbedPane();

        ImageIcon tab1Icon = new ImageIcon(
            this.getClass().getResource("/images/test-pass-icon.png"));
        ImageIcon tab2Icon = new ImageIcon(
            this.getClass().getResource("/images/test-fail-icon.png"));
        ImageIcon tab3Icon = new ImageIcon(
            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);
    }
}

项目的目录结构:

nhooo-swing
├── pom.xml
└── src
    └── main
        ├── java
        │   └── org
        │       └── nhooo
        │           └── example
        │               └── swing
        │                   └── TabbedPaneWithIcon.java
        └── resources
            └── images
                ├── test-error-icon.png
                ├── test-fail-icon.png
                └── test-pass-icon.png

这是上面代码片段的结果。