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

时间:2016-03-03 12:56:19

标签: java swing methods awt jtabbedpane

我是新手,我已经过了好几天才能得到这个想法,但如果有人能帮助我的话,我无法解决它。

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

我想要一个方法,只要我从第一个面板中单击按钮,就会将所有按钮/组件添加到Selected选项卡中。 我怎样才能做到这一点。如果有人想帮助我,我可以在这里发布这三种方法的代码。提前谢谢。

第一个代码将新标签添加到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);
            }

        }
    }

这会创建JPanel添加到JTabbedPane

public JPanel CreateSlice() {

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

}

按钮位于另一个Panel中,并有自己的动作。

GUI Image

2 个答案:

答案 0 :(得分:0)

您可以通过以下方式添加包含butttons的面板:

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;

}

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

答案 1 :(得分:0)

我认为,我找到了一种方法,我的索引变量int index = source.getSelectedIndex();必须是公共变量,然后在另一个选项卡的按钮的Action事件中,会向所选的JTabbedPane添加组件。< / p>

在我的情况下,我介绍了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);

        }
    }