我有一個JPanel和一個Jlist,當用戶在列表中選擇不同的項目時,相應的組件將被添加到面板中,而之前的組件將被刪除。下面是代碼的部分:其中所述depictorPanel是JPanel中JPanel中的組件自動消失
depictorPanel.removeAll();
depictorPanel.invalidate();
depictorPanel.repaint();
GridBagConstraints constraints = new GridBagConstraints();
constraints.fill = GridBagConstraints.BOTH;
depictorPanel.add(viewer, constraints);
viewer.setSize(depictorPanel.getSize());
depictorPanel.invalidate();
depictorPanel.repaint();
,並且觀看者的是組分(。順便說一句觀看者類型的VisualizationView從JUNG庫,它也繼承的JPanel推出)。
當我調整JPanel的大小(通過調整整個窗口的大小,使窗口中的所有組件都被調整大小)或最小化窗口並將其恢復時,查看器組件不見了,因爲我設置了不同depictorPanel和查看器的背景顏色。
我也處理了depictorPanel的componentResized
監聽器來使查看器無效並重新繪製,但沒有運氣。
爲了更好的幫助和更快的發佈一個[SSCCE](http://sscce.org/) – Reimeus
您還可以採取其他兩種策略。 1)如果經常顯示'viewer',具有不同的細節,只需要一個'viewer',但刷新細節。 2)如果'viewer'也可能是'editor'或'generalSettings'(即有限的(少於50)個特定組件),則使用'CardLayout'。 –
@AndrewThompson謝謝你的選擇!你是對的,我認爲使用單一的查看器,但不同的細節是一個更好的方法。使用CardLayout是不可取的,因爲要顯示的不同圖形可能是任何(大)數字。此外,我仍然想知道爲什麼我目前的代碼不起作用。 –