Panel.repaint() 似乎没有刷新面板

Panel.repaint() doesn't seem to be refreshing panel

我在使用默认值重新绘制 GUI 上的 JPanel 时遇到了一些问题。

下面是我现在使用的代码,同样,我不习惯,也不了解java代码,所以请原谅我犯的菜鸟错误:

private void btnResetActionPerformed(java.awt.event.ActionEvent evt) {                                         
    ...

    pnlWagens1 = new pnlWagens();
    UpdateGUI();
}                                        

private void UpdateGUI(){
    pnlWagens1.repaint();
}

到目前为止,我已经尝试了上面的代码,以及将 JPanel 设置为 null、重新绘制、插入面板的新实例、再次重新绘制。 到目前为止没有任何成果,因为最后,我仍然坚持在我的 GUI 上显示旧面板(及其值)。

基本上,我最初制作了一个带有绿色背景的面板,然后将背景设为红色,然后将面板重新设置为绿色背景。不过最后点了Reset之后,还是显示红底的旧面板

任何关于我可能正在做的事情的见解wrong/overlooking将不胜感激。

假设这是所有相关代码(并且 UpdateGUI 不使用 addremove 以及您那里的面板引用),然后更改对象 pnlWagens1 在您的本地 class 中引用不会更改仍然引用旧对象的其他引用。从您最初在某个容器上调用 add 时起,旧对象 pnlWagens1 仍被 Swing 在另一个位置引用。

你需要做的是从容器中remove pnlWagens1,像你现在做的那样改变pnlWagens1,重新add pnlWagens1到容器,然后调用容器上的 revalidate()repaint()