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