gpt4 book ai didi

java - 自定义 Canvas 对象不自动重绘

转载 作者:行者123 更新时间:2023-11-29 03:54:11 25 4
gpt4 key购买 nike

在我回到高中之前,我正在创建一个服务器/客户端 mmo 作为暑期项目,我选择使用 Reddwarf 和 swing 作为我的客户端。我创建了一个扩展(你猜对了)Canvas 的 GameCanvas 对象,并覆盖了 paint 方法。

这是我的绘画方法:

    /**
* Base for drawing the map, player, etc.
*/
@Override
public void paint(Graphics graphics) {
graphics.dispose();
if(strat == null) {
return;
}
Graphics2D g = (Graphics2D) strat.getDrawGraphics();
g.drawString(String.valueOf(System.currentTimeMillis()), 200, 200);
g.dispose();
strat.show();
}

Strat 是一个两层缓冲策略,从包含的 JFrame(它有许多其他组件)中提取

GameCanvas 也在 JPanel 内部,除了 GameCanvas 本身之外,它不包含任何其他内容。

我运行我的程序,我可以看到我当前的时间(以毫秒为单位),最后有一些乱七八糟的数字,整个 JFrame 和所有包含的组件都是灰色的,并且有错误。

发生了什么事? O-o 我以前用 Canvas 做过很多事情,但从来没有发生过这样的事情。 :/

最佳答案

如果我不得不猜测发生了什么,我会说你在绘制文本之前没有绘制背景。

您说这是一个 Swing 问题,但您使用的是 Canvas。默认情况下,Swing 是双缓冲的,我认为没有理由使用具有缓冲策略的 AWT 组件。

我以前从未创建过 MMO,但我猜互联网响应时间将比 Swing 绘画时间慢得多。因此,如果您需要自定义绘画并覆盖 paintComponent() 方法来进行绘画,我建议您只使用 JPanel。不要忘记在开始时调用 super.paintComponent()。

关于java - 自定义 Canvas 对象不自动重绘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7301818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com