我們有一些代碼實現如下:爲什麼在將組件添加到容器時不自動重繪AWT/Swing?
@Override
public void showPanel(CardPanel panel)
{
cardPanel.removeAll();
cardPanel.add((Component) panel);
// Even though you'd think adding a component should automatically repaint,
// it turns out that it doesn't.
cardPanel.repaint();
}
cardPanel
只是一個JPanel
和CardPanel
只是我們自己的接口之一,但所有的卡板只是用正常的Swing組件。
這個評論是莫名其妙的,因爲,據我所知,Container#add
是應該自動重新繪製自己,如果一個孩子被添加。但是,如果我刪除了該行,確實看到添加該子項時它不會重新繪製其內容。
Container
爲什麼會有這種特性?對我來說,這似乎違反了「最少突擊的原則」...
誠然,我們顯示基德停靠面板內這件事,我已經看到了庫進行Swing不正確的東西在多個場合過去,所以它可能是他們對此也負有責任...... – Trejkaz
你要添加多少東西?這就是爲什麼你必須添加所有東西,然後才能看到它,然後將組件添加到你負責觸發'repaint()'的框架中。 –