【发布时间】:2013-07-03 20:50:35
【问题描述】:
我有三个类,一个 JFrame 类和两个 JPanel 类。我已经像这样将初始 JPanel 添加到 JFrame
public JFrame() {
add(new 1stPanel(this));
setVisible(true);
setLayout(null);
}
然后我想在第一个面板中的按钮上使用一个动作监听器来删除它并添加另一个类中的另一个面板。我尝试给每个类一个变量,并像这样使用简单的 remove() 和 add():
private 1stpanel 1p;
private 2ndpanel 2p;
btn.addActionListener((new ActionListener(){
public void actionPerformed(ActionEvent e)
{
remove(1p);
add(2p);
validate();
repaint();
}
}));
这不起作用我也尝试过使用 JFrame.remove(1p) 但这也不起作用。当我执行 removeAll() 时,它会删除第一个面板 JPanel 中的所有内容,但随后我无法添加第二个面板。 我可以使用什么代码取出第一个面板或第一个面板类并添加另一个类中的第二个面板。 提前感谢您的帮助。
【问题讨论】:
-
在
yourframe.getContentPane()上尝试所有这些操作 -
setLayout(null);不要那样做。 Java GUI 可能必须在多个平台、不同的屏幕分辨率和使用不同的 PLAF 上工作。因此,它们不利于组件的精确放置。要为强大的 GUI 组织组件,请改用布局管理器或它们的组合,以及用于空白空间的布局填充和边框。