java - 如何在单击 JButton 时将不同的 JPanel 添加到 JFrame

标签 java swing jpanel actionlistener

我想在用户单击 JButton 时向我的 JFrame 添加不同的 JPanel

面板必须根据用户点击的按钮而改变。这是我的部分代码:

addCours.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            // TODO Auto-generated method stub
            panCours.setBounds(215, 2, 480, 400);
            panCours.setBorder(BorderFactory.createTitledBorder("Saisir les données concernant le cours"));
            ConstituerData.this.getContentPane().add(panCours);
            ConstituerData.this.revalidate();
            ConstituerData.this.repaint();
        }
    });

    addLocal.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            // TODO Auto-generated method stub
            panLocal.setBounds(215, 2, 480, 400);
            panLocal.setBorder(BorderFactory.createTitledBorder("Saisir les données concernant le local"));
            ConstituerData.this.getContentPane().add(panLocal);
            ConstituerData.this.revalidate();
            ConstituerData.this.repaint();
        }
    });

我该如何解决这个问题?

最佳答案

"How can I fix this ?"

  1. setBounds(215, 2, 480, 400) 中您似乎要尝试添加新组件的区域,请考虑为此使用 CardLayout地区。只需添加一个带有 CardLayoutJPanel 作为该区域的主要容器。然后你可以:

    • 动态创建子面板,将其添加到包含面板,然后显示它,或者
    • 提前创建所有内部面板,将它们添加到包含面板,只需使用 CardLayoutshow 方法来显示您要显示的面板.
  2. 对于 future ,我建议使用布局管理器。空布局可能变得难以管理并导致许多问题,不仅对开发人员如此,对应用程序也是如此。 Swing 旨在与布局管理器一起使用,所以请使用它们:)

查看更多信息 How to use Cardlayout并查看示例 here

另见 Laying out Components Within a Container有关如何使用不同布局管理器的更多信息。

关于java - 如何在单击 JButton 时将不同的 JPanel 添加到 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22221748/

相关文章:

java - Android Bundle extra 获取 null 键

java - 在创建表之前向 JTable 添加按钮

java - jcombobox - 检查模型内容是否更改

java - 使用 Java Swing 组件的 Z 顺序

java - 将 JPanel 置于 Controller 之上

java - 为什么我的 Swing 应用程序无法正常显示?

使用由单个安装程序安装的 SQLite 的 Java 桌面应用程序

java - 无法从规范中检索 RSA 私钥,

java - 正弦的多项式逼近中的这些系数是如何确定的?

java - JPanel 位置被 BufferStrategy 重击