Java CustomTabbedPane:停止打开已打开的选项卡

Java CustomTabbedPane:停止打开已打开的选项卡,java,swing,Java,Swing,我在课堂上使用CustomTabbedPane在一个框架内显示不同的面板。就功能而言,它运行良好。我希望我的程序是优雅的,所以当用户单击按钮时,我不希望出现已经打开的选项卡。我已经搜索了3个多小时,但没有发现任何类似我的问题。下面是用于添加产品的ActionListener的代码片段 addProduct.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent arg0) {

我在课堂上使用
CustomTabbedPane
在一个框架内显示不同的面板。就功能而言,它运行良好。我希望我的程序是优雅的,所以当用户单击按钮时,我不希望出现已经打开的选项卡。我已经搜索了3个多小时,但没有发现任何类似我的问题。下面是用于添加产品的ActionListener的代码片段

addProduct.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent arg0) {
            Product obj=new Product();
            //if(isTabPresent()){
                obj.start();    
                mainPane.addTab("Add Product",obj);
                mainPane.setSelectedComponent(obj);
            //}
        }   
    });
我还制作了一个方法
isTabPresent()
来检查主窗格(CustomTabbedPane)中是否有该选项卡。我已经评论了
isTabPresent()
,因为它没有按我想要的方式工作

public boolean isTabPresent(Object tab){ 
        for(int i=0;i<mainPane.getTabCount();i++)
            if(mainPane.getComponentAt(i).equals(tab))
                return true;
        return false;
}
public boolean isTabPresent(对象选项卡){

对于(int i=0;如果您想更快地获得帮助,请发布一个演示问题的示例。很多时候,只要创建一个示例就会发现问题。您的
CustomTabbedPane
确切来自何处?如果您可以访问
getTabComponentAt
,您应该使用它。@splungebob我制作了一个最小的完整示例,所以我再次工作使用我的CustomTabbedPane类,为了检查,我创建了一个新方法,即getTitleAt(index),现在不再比较组件,我只比较选项卡的标题,现在它可以工作了。非常感谢,先生!