如何在JTabbedPane中禁用或启用选项卡?

要启用或禁用中的标签,JTabbedPane可以使用JTabbedPane的setEnableAt(int index, boolean enable)方法。从index0开始,这表示第一个标签位于索引编号0。在enable设置参数时true,同时设置将使该选项卡false将禁用选项卡。

package org.nhooo.example.swing;

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

public class TabbedPaneEnableDisableTab extends JPanel {
    public TabbedPaneEnableDisableTab() {        initializeUI();
    }

    private void initializeUI() {
        JTabbedPane pane = new JTabbedPane();
        pane.addTab("Tabs A", new JPanel());
        pane.addTab("Tabs B", new JPanel());
        pane.addTab("Tabs C", new JPanel());
        pane.addTab("Tabs D", new JPanel());

        // 禁用第一个标签
        pane.setEnabledAt(0, false);

        // Disable the last tab, the pane.getTabCount() return the
        //JTabbedPane中的标签数。因为索引
        // 从0开始,我们需要将计数减去1。
        pane.setEnabledAt(pane.getTabCount() - 1, false);

        this.setLayout(new BorderLayout());
        this.setPreferredSize(new Dimension(500, 200));
        this.add(pane, BorderLayout.CENTER);
    }

    public static void showFrame() {
        JPanel panel = new TabbedPaneEnableDisableTab();        panel.setOpaque(true);

        JFrame frame = new JFrame("JTabbedPane 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() {                TabbedPaneEnableDisableTab.showFrame();
            }
        });
    }
}

以下是上面代码片段的屏幕截图结果:

在JTabbedPane中启用或禁用选项卡