2012-05-02 39 views
1

我是一个新手,所以请裸露在我身边!我正在玩一些秋千,我正在努力创造一个基本的节目。该程序将根据数组的大小选择具有不同数量选项卡的选项卡式窗格。 (我的最终目标是让用户更改数组中的项目数量,从而更改标签数量)。JTabbed Pane创建外部类

每个选项卡将具有完全相同的组件,文本区域,表格以及一些按钮和标签。我想要做的不是单独编写这些选项卡,而是反复重写我的代码,然后创建一个类来放入所有组件。

但是我很难过。这是我创建的选项卡类:

public class LocaleTab { 

public LocaleTab(){ 
    JPanel tab = new JPanel(); 
    JLabel label = new JLabel(); 
    label.setPreferredSize(new Dimension(300, 300)); 

    tab.add(label); 
} 
} 

这是我的代码,我试图用它来调用:

LocaleTab tab1 = new LocaleTab(); 
    JTabbedPane localesTabPane = new JTabbedPane(); 

    localesTabPane.add(tab1); 

我得到一个错误,当我尝试编译此。我认为我的方法可能完全错误。

The method add(Component) in the type JTabbedPane is not applicable 
    for the arguments (LocaleTab) 

一个是我的担忧是,当我尝试使用在每个选项卡中的表格和文本方面的数据(事件监听器是什么,我会用我的想法?我还没有得到该阶段尽管如此!)我将如何定位各个标签组件?

+2

你得到一个错误......考虑与我们分享堆栈跟踪 – Robin

+0

希望这是你的意思。“Add方法(组件)在类型JTabbedPane中不适用于参数(LocaleTab)“? – Peck3277

+0

为了更快地获得更好的帮助,请发布[SSCCE](http://sscce.org/)。 –

回答

3

更改为:

public class LocaleTab extends JPanel { 
    public LocaleTab(){ 
     JLabel label = new JLabel(); 
     label.setPreferredSize(new Dimension(300, 300)); 
     add(label); 
    } 
} 
+0

+1这可能会修复我认为他得到的编译错误,因为实际的错误不会发布在问题 – Robin

+0

完美,很好地照顾它! – Peck3277

0

也许你正在寻找的东西接近这个:

public class LocaleTab { 

    private JPanel tab; 

    public LocaleTab() { 
     tab = new JPanel(); 
     JLabel label = new JLabel(); 
     label.setPreferredSize(new Dimension(300, 300)); 

     tab.add(label); 
    } 

    public JPanel getTabPanel() { 
     return tab; 
    } 
} 

而且使用LocaleTab,如下图所示。

LocaleTab tab1 = new LocaleTab(); 
JTabbedPane localesTabPane = new JTabbedPane(); 

localesTabPane.add(tab1.getTabPanel()); 

而且知道如何JTabbedPane的作品请看看这里:How to Use Tabbed Panes