如果您「使用新JPanel更新JPanel」,那麼您不是「更新」,您是創建一個新的JPanel。 例如,我們有一個綠色的JPanel稱爲「panelTest」:
panelTest = new JPanel();
panelTest.setBackground(Color.green);
add(panelTest);
而現在我們有一個按鈕,將在JPanel的背景顏色由綠色變爲紅色,但在一個錯誤的方式:
JButton btnTest = new JButton("Test");
btnTest.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
panelTest = new JPanel(); //woops, now we have 2 panels...
panelTest.setBackground(Color.red);
}
});
請注意panelTest
是一個指向綠色面板的指針,現在它指向一個帶有紅色背景的新JPanel。這個新的JPanel沒有被添加到任何容器,因此它不會顯示。舊的綠色面板將保持可見。
更新形象的最好辦法是內ImagePanel創造的方法,如:
public void setImage(Image image) {
this.img = image;
this.repaint();
}
這樣你就不必創建一個新的ImagePanel只是改變了背景。
嘗試'panel.repaint()'圖像更改後。另外,你如何改變圖像?你是否在創建一個新的ImagePanel? – TheBronx 2013-03-11 08:40:04
嘗試了這一點,並通過用新的JPanel更新JPanel。但獲得相同的舊圖像。 在塗料中手動更改圖像 – Kidaaaa 2013-03-11 08:44:30
另外,如果圖像從路徑中刪除,則應用程序會將圖像顯示爲JPanel背景 – Kidaaaa 2013-03-11 08:49:28