JTabbedPane - 动态选项卡控件

时间:2011-10-17 18:25:04

标签: java swing

我遇到了一个有趣的事情...... null 对象的一切顺利当我在构造函数中添加标签

public class TPane extends JTabbedPane
{

public TPane(ImageIcon iconA,ImageIcon iconB)
{
  this.addTab("A",iconA,null);
  this.addTab("B",iconB,null);

}

}

但是当我尝试在另一个对象中添加标签时,如

public class AClass
{

public void addNewTab(TPane tp, ImageIcon icon)
{

  tp.addTab("C",icon,null);//<-- contains null
}

}

...由于 null ,它不会添加标签。好的,如果我更改 null ,让我们说新的JLabel()代码正常工作:S

以上是以前的对象用法......

public class BClass extends JPanel
{


  private AClass a=new AClass();
  private TPane tp=new TPane();
  JButton addTabButton=new JButton("add tab");
  ImageIcon icon;

  public BClass(Image image)
{

icon=new ImageIcon(image);
...
this.add(tp);
...
addTabButton.addMouseListener(new MouseAdapter()
{

  public void mousePressed(MouseEvent e)
{

   a.addNewTab(tp,icon);

}

});

}
}

所以我的问题是如何动态地将空对象添加到JTabbedPane?

赞赏任何有用的评论

1 个答案:

答案 0 :(得分:3)

我不确定这是不是问题。我已成功尝试过,请参阅下面的示例及其代码(尽管这是一个病态示例):

enter image description here

package so;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JTabbedPane;
import javax.swing.SwingUtilities;

public class JTabbedEx extends JTabbedPane {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                ImageIcon icon = new ImageIcon();
                JTabbedPane tabs = new JTabbedPane();
                tabs.addTab("Tab1", icon,null);
                new AnotherClass().addTab(tabs, icon);
                JFrame frame  = new JFrame();
                frame.add(tabs);
                frame.pack();
                frame.setVisible(true);
            }
        });         
    }
}

class AnotherClass {
    public void addTab(JTabbedPane tabs, ImageIcon icon) {
        tabs.addTab("Another tab", icon, null);
    }
}