我想在用户单击 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 ?"
setBounds(215, 2, 480, 400)
中您似乎要尝试添加新组件的区域,请考虑为此使用CardLayout
地区。只需添加一个带有CardLayout
的JPanel
作为该区域的主要容器。然后你可以:- 动态创建子面板,将其添加到包含面板,然后显示它,或者
- 提前创建所有内部面板,将它们添加到包含面板,只需使用
CardLayout
的show
方法来显示您要显示的面板.
对于 future ,我建议使用布局管理器。空布局可能变得难以管理并导致许多问题,不仅对开发人员如此,对应用程序也是如此。 Swing 旨在与布局管理器一起使用,所以请使用它们:)
查看更多信息 How to use Cardlayout并查看示例 here
另见 Laying out Components Within a Container有关如何使用不同布局管理器的更多信息。
关于java - 如何在单击 JButton 时将不同的 JPanel 添加到 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22221748/