gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 03:23:36 27 4
gpt4 key购买 nike

我想在用户单击 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com