【发布时间】:2016-10-12 22:52:07
【问题描述】:
我在使用默认值在我的 GUI 上重新绘制 JPanel 时遇到了一些问题。
我现在正在使用的代码如下,再次,我不习惯,对java代码也不是很了解,所以请原谅我犯了菜鸟的错误:
private void btnResetActionPerformed(java.awt.event.ActionEvent evt) {
...
pnlWagens1 = new pnlWagens();
UpdateGUI();
}
private void UpdateGUI(){
pnlWagens1.repaint();
}
到目前为止,我已经尝试了上面的代码,以及将 JPanel 设置为 null,重新绘制,插入面板的新实例,再次重新绘制。 到目前为止没有任何成果,因为最后,我仍然坚持在我的 GUI 上显示旧面板(及其值)。
基本上,我最初制作了一个具有绿色背景的面板,将背景设为红色,然后将面板重置为再次具有绿色背景。但是最后,点击重置后,它仍然显示带有红色背景的旧面板。
任何关于我可能做错/忽略的见解将不胜感激。
【问题讨论】:
-
要获得更好的帮助,请考虑创建并发布Minimal, Complete, and Verifiable Example Program。我们不想看到你的整个程序,而是你应该将你的代码压缩成仍然可以编译的最小部分,没有与你的问题无关的额外代码,但仍然可以证明你的问题。您可以通过简单地尝试隔离和暴露错误来自己解决问题。
-
为了简洁起见翻译上述内容:我在上面的代码中没有看到您的错误,表明它在未显示的代码中。首先你必须隔离错误,因此需要minimal reproducible example。
-
唯一可能的问题是您正在创建一个新的 pnlWagens 对象,因此您可能没有更新正确的对象 - 但很难说。
-
我正在更新正确的,但正如 NESPowerGlove 所说,我需要将面板重新添加到我的框架中才能更新其参考
-
也许吧。根本不交换 JPanel 可能会更干净,而是更改已经存在的面板状态,调用 repaint() 并让它根据其状态绘制不同的图像。这将更简单编码并且涉及更少的开销。