如何动态地将JPanel添加到已动态添加到JTabbedPane的JscrollPane中?

时间:2016-01-08 16:44:33

标签: java swing

我需要在JScorllPane中动态添加已动态添加到Jtabbed窗格的JPanels。 有2个按钮,用于添加'而另一个是更多'。 '添加'按钮添加带有滚动窗格的新选项卡以及占据整个选项卡的一个动态面板。 当我点击“更多”时间它应该在同一个标​​签中添加更多面板,但我无法将更多面板添加到同一个标签中。

整个标签由第一个面板占用。

jButton3-ADD 将jButton2-更多

 private void init() {
            jScrollPane1 = new JScrollPane(new JPanel());`enter code here`
            add(jScrollPane1);

    }


private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        int i=0;
        AddTab=hMSComboBox1.getSelectedIndex();
        String uomCode = hMSComboBox1.getSelectedRow()[AddTab];
        JScrollPane jScrollPane1=new JScrollPane();
        jScrollPane1 = new JScrollPane(new JPanel());
        tabbedPane1.add(jScrollPane1);
        tabbedPane1.setTitleAt(i, uomCode);
        tabbedPane1.setVisible(true);
        tabbedPane1.validate();
        i++;
        RecepieIngred Pan1=new RecepieIngred();
        Pan1.setPreferredSize(new Dimension(300, 350));
        Pan1.setBorder(new LineBorder(Color.BLACK, 1));
        JPanel view = ((JPanel)jScrollPane1.getViewport().getView());
        view.setLayout(new GridLayout(1, 0, 12, 12));
        view.add(Pan1);
        view.validate();
    }     

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         

                RecepieIngred Pan1=new RecepieIngred();
                Pan1.setPreferredSize(new Dimension(450, 600));
                Pan1.setBorder(new LineBorder(Color.BLACK, 1));
                JPanel view = ((JPanel)jScrollPane1.getViewport().getView());
                view.setLayout(new GridLayout(1, 0, 12, 12));
                view.add(Pan1);
                view.validate();


        //add(jButton2, BorderLayout.SOUTH);

    }

1 个答案:

答案 0 :(得分:0)

您遇到的最大错误是您在jButton3ActionPerformed回调中指的是' jScrollPane1 '。我怀疑你有一个类成员与你在另一个回调jButton2ActionPerformed中引用它的名称相同。但是,您遇到的问题是jButton3ActionPerformed将使用该方法中的本地实例(与全局成员相同,但JRE将采用本地范围)。所以实际上两个回调都指的是不同的滚动参考。

另外,我宁愿在你的面板上使用带有Y-AXIS的BoxLayout。