簡體   English   中英

如何在程序運行時將JPanel替換為另一個JPanel

[英]How to replace a JPanel with another while the program is running

該代碼有一個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並添加新的。 然后調用revalidate。

這樣的事情:

public void setGraphicPanel(GraphicPanel graphicPanel) {
    this.removeAll();
    this.graphicPanel = graphicPanel;
    this.add(graphicPanel);
    this.revalidate();   
}

雖然CardLayout只是為了這件事而設計的。 你確定你不想使用CardLayout嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM