【问题标题】:could not remove/add jpanel in jframe无法在 jframe 中删除/添加 jpanel
【发布时间】:2014-11-25 08:32:09
【问题描述】:

我遇到了一个问题,即我有一个 JFrame,其中添加了 2 个 JPanel,如图所示: 在上图中,一个 JPanel 有一些 JButton,第二个 JPanel 有一些表单字段,当我点击第一个 JPanel 中的 JButton 时,我想更改/(删除旧的并添加新的 JPanel),如下所示:

我有代码 sn-p :

myPanel.clickListener(new ActionListener() {

                @Override
                public void actionPerformed(ActionEvent arg0) {

                    MainFrame.this.getContentPane().remove(((BorderLayout)getLayout()).getLayoutComponent(BorderLayout.CENTER));
                    MainFrame.this.getContentPane().add(twoPanel, BorderLayout.CENTER);
                    MainFrame.this.invalidate();
                    MainFrame.this.validate();
                }
            });


    myPanel.clickListener(new ActionListener() {

                @Override
                public void actionPerformed(ActionEvent arg0) {
                    MainFrame.this.getContentPane().remove(((BorderLayout)getLayout()).getLayoutComponent(BorderLayout.CENTER));
                    MainFrame.this.getContentPane().add(customerPanel, BorderLayout.CENTER);
                    MainFrame.this.invalidate();
                    MainFrame.this.validate();
                }
            });

            MainFrame.this.setMaximumSize(new Dimension(600, 550));
            MainFrame.this.setMinimumSize(new Dimension(599, 549));
            MainFrame.this.setSize(600, 550);
            MainFrame.this.setResizable(false);
            MainFrame.this.setVisible(true);
        }
    });

通过上面的代码,我可以添加新的 JPanel,但无法删除第一个 JPanel。

【问题讨论】:

标签: java swing jframe jpanel


【解决方案1】:

在我看来,您应该使用 CardLayout。 它允许您更改 JPanel 的可见性,这实际上是您想要做的。 您为右侧定义两个 JPanel,然后在侦听器中切换它们。

看这里的例子: https://docs.oracle.com/javase/tutorial/uiswing/layout/card.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 2011-02-23
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多