JTabbedPane在外部类中创建

时间:2012-05-02 16:27:13

标签: java swing

我有点新手所以请光临我!我正在玩一些摇摆的guis,我正在尝试创建一个基本程序。该程序将具有一个标签窗格,其中包含不同数量的选项卡,具体取决于阵列的大小。 (我的最终目标是让用户更改数组中的项目数量,从而更改选项卡的数量)。

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

然而,我有点难过。这是我创建标签的类:

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 个答案:

答案 0 :(得分:3)

更改为:

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

答案 1 :(得分: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