Java 创建一个方法以在选定的JTabbedPane中添加组件

Java 创建一个方法以在选定的JTabbedPane中添加组件,java,swing,methods,awt,jtabbedpane,Java,Swing,Methods,Awt,Jtabbedpane,我是一个新手,我已经花了几天的时间来理解这个想法,但是如果有人能帮我的话,我无法解决它 我把两个主要的JPanel放在一个JFrame中。我在第一个面板上有一些按钮。我有一种方法可以将面板添加到JTabbedPane,方法是调用另一种方法创建JPanels,然后将其添加到选项卡 我需要一种方法,每当我从第一个面板单击按钮时,该方法将向所选选项卡添加任何按钮/组件。 我怎样才能做到这一点。如果有人愿意帮助我,我可以在这里发布这三种方法的代码。提前谢谢 第一个代码将新选项卡添加到JTabbedPan

我是一个新手,我已经花了几天的时间来理解这个想法,但是如果有人能帮我的话,我无法解决它

我把两个主要的
JPanel
放在一个
JFrame
中。我在第一个面板上有一些按钮。我有一种方法可以将面板添加到
JTabbedPane
,方法是调用另一种方法创建
JPanels
,然后将其添加到选项卡

我需要一种方法,每当我从第一个面板单击按钮时,该方法将向所选选项卡添加任何按钮/组件。 我怎样才能做到这一点。如果有人愿意帮助我,我可以在这里发布这三种方法的代码。提前谢谢

第一个代码将新选项卡添加到
JTabbedPane

private class TabPlus implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            JPanel panel = CreateSlice();
            String title = "Slice " + String.valueOf(pane.getTabCount());
            pane.insertTab(title, null, panel, null, pane.getTabCount() - 1);
        }
    }
public JPanel CreateSlice() {

    JPanel Slice = new JPanel();
    Slice.setPreferredSize(new Dimension(550, 600));
    return Slice;

}
第二个代码用于选择选项卡

private class TabSelect implements ChangeListener {
        @Override
        public void stateChanged(ChangeEvent e) {
            JTabbedPane source = (JTabbedPane) e.getSource();
            if (source.getSelectedComponent() != null) {
                int index = source.getSelectedIndex();
                System.out.print(index);
            }

        }
    }
这将创建要添加到
JTabbedPane
JPanel

private class TabPlus implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            JPanel panel = CreateSlice();
            String title = "Slice " + String.valueOf(pane.getTabCount());
            pane.insertTab(title, null, panel, null, pane.getTabCount() - 1);
        }
    }
public JPanel CreateSlice() {

    JPanel Slice = new JPanel();
    Slice.setPreferredSize(new Dimension(550, 600));
    return Slice;

}
按钮位于另一个面板中,具有自己的操作


您可以通过以下方式添加带有按钮的面板:

public JPanel CreateSlice() {

    JPanel Slice = new JPanel();
    Slice.setPreferredSize(new Dimension(550, 600));

    JPanel buttonsPanel = new JPanel();
    buttonsPanel.add(new JButton("dumpButton"));
    buttonsPanel.setVisible(false);
    Slice.add(buttonsPanel);

    return Slice;

}

每当发生选择时,将buttonPanel的可见性设置为true。

我想,我找到了一种方法,我的索引变量
int index=source.getSelectedIndex()
必须是公共变量,然后来自另一个选项卡的按钮的活动事件将向所选的
JTabbedPane
添加组件

在我的例子中,我介绍了panel(network_slices)的and
ArrayList
,每次我向
JTabbedPane
添加一个面板时,它也会添加到
ArrayList
。然后,我使用所选JTabbedPane的索引从ArrayList调用该面板。这是代码的一部分

private class TabSelect implements ChangeListener {
    @Override
    public void stateChanged(ChangeEvent e) {
        JTabbedPane source = (JTabbedPane) e.getSource();
        if (source.getSelectedComponent() != null) {
            index = source.getSelectedIndex();
            System.out.print(index);
        }
    }
}

private class AddTab implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            Slice panel = new Slice();
            panel.setPreferredSize(new Dimension(550, 600));
            String title = "Slice " + String.valueOf(pane.getTabCount());
            pane.insertTab(title, null, panel, null, pane.getTabCount() - 1);
            network_slices.add(panel);
        }
    }

private class AddNetworkFuncitons implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            String buttonselected = (String) e.getActionCommand();
            JButton button = new JButton(buttonselected);
            network_slices.get(index).add(button).setVisible(true);
            System.out.print(buttonselected);

        }
    }

共享您的代码,以便我们查看。是的,没错,但这些按钮位于另一个面板中,因此无论何时选择它,使用此按钮的操作都会在所选选项卡上创建这些按钮或任何其他组件(例如文本框、列表)。为什么您不选择这些按钮,将所有JTabbedPane的vibility设置为false,并且每当选择一个JTabbedPane时,都将vibility设置为true。这是一个好主意,但我有一个方法,通过调用创建面板的公共方法将选项卡添加到
JTabbedPane
。现在对我来说似乎很复杂,我该怎么做?嗨@NAIT,我解释清楚了吗?非常感谢,我会尝试这个,但我不希望选项卡选择会使这个按钮可见,我希望另一个面板上的按钮会使这个按钮可见,但是在一个选定的选项卡面板中。是的,我也可以通过
ActionListener
,来实现这一点,但如何在选定的选项卡面板中执行此操作?我在框架的左侧面板(类)中有按钮(B1、B2、B3)。我正在添加框架右侧
JPanel
JTabbedPane
中的选项卡,比如Tab1、Tab2、Tab3,。。。(在另一个班级)。现在我想这样,我将首先选择选项卡(选项卡1/2/3),在任何一个选项卡中,我将通过单击B1创建一个按钮B11,和/或通过单击B2创建一个按钮B22。我已经添加了图像