如何从选项卡窗格中删除选项卡

Har*_*sha 1 java swing jtabbedpane

我在下面创建了一个swing应用程序,它在单击与特定任务相关的按钮时显示选项卡中的主要任务.我已经为每个选项卡添加了一个小的关闭按钮,当我点击与该选项卡相关的关闭按钮时,我需要关闭选项卡.

在此输入图像描述

关闭按钮位于JPanel类中的类中,如下所示,

public class CloseTab extends JPanel {

    JLabel title = new JLabel();
    JButton closeButton = new JButton();
    int tabIndex;
    JTabbedPane tabbedPane = null;
    public static int SELECTED_TAB_INDEX;
    .
    .
    .    

    public static void setSELECTED_TAB_INDEX(int SELECTED_TAB_INDEX) {
        CloseTab.SELECTED_TAB_INDEX = SELECTED_TAB_INDEX;
    }

    .
    .

    public void setCloseAction(ActionListener al) {
        closeButton.addActionListener(al);
        closeButton.setSize(10, 10);
        closeButton.setBorder(new EmptyBorder(0, 0, 0, 0));
        closeButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/ofm/mnu/icons/delete.gif")));

    }

    public void setTabIndex(int index) {
        this.tabIndex = index;
        System.out.println(tabIndex);
    }

    public void init() {
        add(title);
        add(closeButton);
        setOpaque(false);
        setCloseAction(closeActoion);      

    }



    ActionListener closeActoion = new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            // System.out.println(tabIndex);
            if(tabbedPane.getTabCount() != 0 && tabbedPane.getSelectedIndex() == SELECTED_TAB_INDEX){
                tabbedPane.remove(SELECTED_TAB_INDEX);
            }   
        }
    };

}
Run Code Online (Sandbox Code Playgroud)

在主框架中我选择了SELECTED_TAB_INDEX变量,如下所示,

tbpWorkSpace.addChangeListener(new ChangeListener() {

            public void stateChanged(ChangeEvent e) {
                JTabbedPane a = (JTabbedPane) e.getSource();
                CloseTab pnl = new CloseTab();                
                pnl.setSELECTED_TAB_INDEX(a.getSelectedIndex());
            }
        });
Run Code Online (Sandbox Code Playgroud)

但是,我无法得到我想要的结果请告诉我有没有其他方法可以实现我想要的结果.

Har*_*Joy 6

删除.remove(index)JTabbedPane的tab使用方法.在此处了解详细信息:如何使用选项卡式窗格