Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用容器在JavaSwing中重新绘制_Java_Swing_Panel_Repaint - Fatal编程技术网

使用容器在JavaSwing中重新绘制

使用容器在JavaSwing中重新绘制,java,swing,panel,repaint,Java,Swing,Panel,Repaint,我有一个简单的网格,在用户点击的地方放置一个正方形。网格和窗格的访问权保存在“游戏”对象中 这项工作: private void buildClicked(int x, int y) { panel.repaint(); game.buy(x, y); } 这不会触发重新绘制: private void buildClicked(int x, int y) { game.getPanel().repaint(); game.buy(x, y); } 如果我将面

我有一个简单的网格,在用户点击的地方放置一个正方形。网格和窗格的访问权保存在“游戏”对象中

这项工作:

private void buildClicked(int x, int y) {
    panel.repaint();
    game.buy(x, y);
}
这不会触发重新绘制:

private void buildClicked(int x, int y) {
    game.getPanel().repaint();
    game.buy(x, y);
}
如果我将面板设为游戏的公共变量,这也不起作用:

private void buildClicked(int x, int y) {
    game.panel.repaint();
    game.buy(x, y);
}
“getPanel”只返回top的“panel”对象所引用的同一个自定义panel对象

我想包含在游戏对象包装面板。类似地,在“buy”函数中调用repaint函数也不起作用


为什么在上述示例中“重新绘制”函数的行为会有所不同?

我问题下的注释完全正确。我在游戏对象和窗口本身中分别声明了面板。又一个被新材料缠住而缺少基本知识的案例。谢谢大家!

您确定
panel==game.getPanel()-如果存在自定义对象,请确保没有覆盖任何不应该覆盖的对象。同意,您可能存在引用错误的问题—您认为引用可见组件的变量实际上不是。但仅凭您提供的代码片段就很难说了。