该代码具有一个带有内部JPanel的JPanel,用于显示awt绘图。鼠标单击后,内部JPanel将被其多态同级之一替换。此代码不会替代jPanel。
class ContentPanel extends JPanel {
private GraphicPanel graphicPanel;
public ContentPanel(GraphicPanel graphicPanel) {
this.graphicPanel = graphicPanel;
add(this.graphicPanel);
public void setGraphicPanel(GraphicPanel graphicPanel) {
this.graphicPanel = graphicPanel;
//invalidate();
//revalidate();
//repaint();
}
将graphicPanel设置为多态相对不会导致任何错误,只是不会绘制新的graphicPanel。不推荐使用cardLayout,必须有一种更简洁的方法。如何进行? 最佳答案
在setGraphicPanel中,您需要删除当前的graphicPanel并添加新的。然后调用重新验证。
像这样的东西:
public void setGraphicPanel(GraphicPanel graphicPanel) {
this.removeAll();
this.graphicPanel = graphicPanel;
this.add(graphicPanel);
this.revalidate();
}
尽管CardLayout旨在执行此操作。您确定不想使用CardLayout吗?