创建方法以在 Selected JTabbedPane 中添加组件

Create a Method to add components in Selected JTabbedPane

我是新手,想了好几天了,还是解决不了,谁能帮帮我。

我把主要的两个 JPanel 合二为一 JFrame。我在第一个面板中有一些按钮。我有一种方法可以通过调用另一种方法来创建 JPanels 然后将其添加到选项卡,从而将面板添加到 JTabbedPane

我想要一种方法,可以在我单击第一个面板中的按钮时将任何 buttons/components 添加到我想要的“选定”选项卡。 我怎样才能做到这一点。如果有人想帮助我,我可以 post 这三种方法的代码。提前致谢。

第一个代码向 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);
        }
    }

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

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
public JPanel CreateSlice() {

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

}

按钮在另一个面板中,有自己的操作。

GUI Image

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

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;

}

并且每当发生选择时,将按钮面板的可见性设置为 true。

我想,我找到了一种方法,我的索引变量 int index = source.getSelectedIndex(); 必须是 public 变量,然后在另一个选项卡的按钮的动作事件中将组件添加到这个选定的 JTabbedPane.

在我的例子中,我引入了 ArrayList 面板 (network_slices),每次我将面板添加到 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);

        }
    }