如果您“使用新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