Java 如何在程序运行时用另一个JPanel替换JPanel
代码有一个JPanel,其中包含一个显示awt图形的内部JPanel。鼠标单击后,内部JPanel将被其多态兄弟之一替换。此代码不会取代jPanel //使无效(); //重新验证(); //重新油漆(); }Java 如何在程序运行时用另一个JPanel替换JPanel,java,swing,Java,Swing,代码有一个JPanel,其中包含一个显示awt图形的内部JPanel。鼠标单击后,内部JPanel将被其多态兄弟之一替换。此代码不会取代jPanel //使无效(); //重新验证(); //重新油漆(); } 将graphicPanel设置为多态相对不会导致任何错误,只是不会绘制新的graphicPanel。使用cardLayout不是首选,必须有更干净的方法。如何继续?在setGraphicPanel中,您需要删除当前的graphicPanel并添加新的graphicPanel。然后致电
将graphicPanel设置为多态相对不会导致任何错误,只是不会绘制新的graphicPanel。使用cardLayout不是首选,必须有更干净的方法。如何继续?在setGraphicPanel中,您需要删除当前的graphicPanel并添加新的graphicPanel。然后致电重新验证 大概是这样的:
尽管CardLayout的设计初衷就是为了实现这一点。你确定不想使用CardLayout吗?更简洁的方法是使用CardLayout。我使用了CardLayout。它工作得很好。谢谢各位。
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;
public void setGraphicPanel(GraphicPanel graphicPanel) {
this.removeAll();
this.graphicPanel = graphicPanel;
this.add(graphicPanel);
this.revalidate();
}