我在使用默认值重新绘制 GUI 上的 JPanel 时遇到了一些问题。
下面是我现在使用的代码,再一次,我不习惯,也不太了解java代码,所以请原谅我犯的菜鸟错误:
private void btnResetActionPerformed(java.awt.event.ActionEvent evt) {
...
pnlWagens1 = new pnlWagens();
UpdateGUI();
}
private void UpdateGUI(){
pnlWagens1.repaint();
}
到目前为止,我已经尝试了上面的代码,以及将 JPanel 设置为 null、重新绘制、插入面板的新实例、再次重新绘制。 到目前为止没有任何成果,因为最后,我仍然坚持在我的 GUI 上显示旧面板(及其值)。
基本上,我最初制作一个带有绿色背景的面板,然后将背景设为红色,然后将面板重新设置为绿色背景。然而最后,在点击 Reset 后,它仍然显示带有红色背景的旧面板。
任何关于我可能做错/忽略的事情的见解都将不胜感激。
最佳答案
假设这是所有相关代码(并且 UpdateGUI
不使用 add
或 remove
以及您在那里的面板引用) ,然后更改对象 pnlWagens1
在本地类中引用的内容不会更改仍然引用旧对象的其他引用。旧对象 pnlWagens1
仍然被 Swing 在另一个位置引用,从您最初在某个容器上调用 add
开始。
您需要做的是从容器中删除
pnlWagens1
,像现在一样更改pnlWagens1
,重新添加
pnlWagens1
到容器,然后调用容器上的 revalidate()
和 repaint()
。
关于java - Panel.repaint() 似乎没有刷新面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40009632/