java - 使用容器在 Java Swing 中重绘

原文 标签 java swing panel repaint

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

这有效:

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);
}

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

“getPanel”只返回顶部的“面板”对象所指的同一个自定义面板对象。

我想将面板包含在游戏对象包装器中。同样,在“购买”函数中调用重绘函数也不起作用。

为什么上述示例中的“重绘”功能表现不同?

最佳答案

我的问题下的评论完全正确。我一直在 Game 对象和窗口本身中分别声明面板。另一个被新 Material 所吸引而遗漏一些基本内容的案例。谢谢!

关于java - 使用容器在 Java Swing 中重绘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5160764/

相关文章:

java - 在第二次MR期间未创建文件

java - 即使使用 iterator.remove() 删除节点,HashMap 也会抛出 ConcurrentModification

java - Web 界面或图形用户界面

java - 实现 JScrollPane 以滚动浏览 JLabels 和 JButton 列表

java - java中GUI组件样式的方法

java - 当鼠标移至2个面板的交叉区域时,更改光标

c# - 如何确定是否在面板上执行了右键单击?

Java 反射 : invoking inherited methods from child class

java - 如何检查文件是否存在以及是否存在,然后我想在java中的finally block 中将其关闭?

wpf - WPF 中的可聚焦面板