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”仅返回顶部“panel”对象所引用的相同自定义面板对象。

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

为什么“重绘”函数在上面的示例中表现不同?

最佳答案

我的问题下的评论完全正确。我一直在游戏对象和窗口本身中单独声明面板。另一个例子是陷入新 Material 而错过了一些基本的东西。谢谢!

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

相关文章:

java - 增加 jlabel 在 y 正方向上的高度?

apache-flex - Flex - 如何制作选项卡式面板

java - Hibernate 级联删除 ConstraintViolationException

java - 集群中分布式事务和/或数据共享的Java解决方案

java - 防止 JavaFX 线程死于 JFXPanel Swing 互操作?

java - 使用空布局在 JTextpane 中插入 Jtable

java - repaint() 方法不重新绘制 JPanel

css - jquery mobile : responsive panel, 为什么应用样式?

java - 将 RMI 与 JSF 和 Tomcat 结合使用

java - Android Push Notification 从设备到其他设备