将按钮组件添加到java中的java jtabbedpane

时间:2012-12-16 13:12:17

标签: java swing awt jbutton jtabbedpane

我正在尝试使用java swings创建GUI。我只是java swings的初学者。 我的主要想法是创建两个选项卡,并在其中一个选项卡中添加一个按钮。

我想为每个标签编写一个单独的类,所以我创建了3个类,其中一个有主方法。另外两个代表标签。

在其中一个标签中,我想在中间添加一个按钮,并为该按钮添加一个动作监听器。

下面是具有主要方法的类。

public class abc {
    JFrame frame;
    JTabbedPane tabPane;
    ImageIcon close;
    Dimension size;
    int tabCounter = 0;
    abc_export exp;
    abc_import imp;
    public static void main(String[] args) {
        abc jtab = new abc();
        jtab.start();
    }
    public void start(){
    exp=new abc_export();
    imp=new abc_import();
    tabPane.addTab(null, exp.panel);
    tabPane.addTab(null, imp.panel);
    tabPane.setTabComponentAt(tabPane.getTabCount()-1, exp.tab);
    tabPane.setTabComponentAt(tabPane.getTabCount()-1, imp.tab);
    }

    public abc() {
        //  Create a frame
        frame = new JFrame();
        //  Create the tabbed pane.
        tabPane = new JTabbedPane();
        //  Create a button to add a tab
        //  Create an image icon to use as a close button
        close = new ImageIcon("C:/JAVAJAZZUP/tabClose.gif");
        size = new Dimension(close.getIconWidth()+1, close.getIconHeight()+1);
        //Adding into frame
        frame.add(tabPane, BorderLayout.CENTER);
        frame.setSize(300, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        }

};

下面是其中一个标签的代码。尽管另一个标签也有相同的代码,它们代表不同类名的其他标签。

public class abc_import {
    ImageIcon close;
    Dimension size;
    int tabCounter = 0;
    JPanel tab;
    final JPanel panel;
    public abc_import() {
        close = new ImageIcon("C:/JAVAJAZZUP/tabClose.gif");
        size = new Dimension(close.getIconWidth()+1, close.getIconHeight()+1);
        //Adding into frame
        JLabel label = null;
        panel = new JPanel();
        //  Create a panel to represent the tab
        tab = new JPanel();
        tab.setOpaque(false);
        String str = "abc_import";
        label = new JLabel(str);
        tab.add(label, BorderLayout.WEST);
        }
};

正如预期的那样,两个选项卡都已创建。但我没有在其中一个标签中添加按钮的想法。

现在我的问题是,如果我想在其中一个标签中添加一个按钮,就像我已经说过的那样。我需要做什么?有人可以帮助我吗?

2 个答案:

答案 0 :(得分:3)

我不确定我是否理解您的意图,但您可以尝试TabComponentsDemo中讨论的How to Use Tabbed Panes: Tabs With Custom Components中所述的方法。

显示了一个相关示例here

答案 1 :(得分:2)

您可以尝试使用setTabComponentAt方法。

这个方法有参数setTabComponentAt(int index, Component component),你只需要提到你想要的组件。

您可以引用链接here