如何在JPanel
上重绘本地字段?我正在写一个蛇游戏。当蛇移动到下一个单元格时,我们需要重新绘制已更改的单元格(不是整个JPanel
)。 Cell可以抛出PropertyChangeEvent
个对象,然后我可以调用repaint(x,y,h,w)方法。这是正确的方法吗?
答案 0 :(得分:0)
首先,我假设您确实想要使用面板而不是表格,但我认为您可能需要查看JTable组件,因为它可能更适合您的应用程序。 / p>
您的问题的答案是您不应该明确要求对单元格进行重新绘制。相反,每个单元格应表示为JComponent子类的实例,其中包含如下代码:
public class SnakeGameCell extends JComponent {
private boolean snakePresent;
public boolean isSnakePresent() {
return snakePresent;
}
public void setSnakePresent(boolean present) {
if (snakePresent != present) {
snakePresent = present;
repaint();
}
}
}
换句话说,每个组件应该负责知道什么时候应该重新绘制,并在适当的时候实现。很难找到适合重新调用()以及#34;外部"的情况。换句话说,不要让控制器类负责启动重绘 - 让需要重新绘制的东西(组件)自行决定。