在我回到高中之前,我正在创建一个服务器/客户端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();
}
斯特拉特是两层BufferStrategy中,并从含有的JFrame(其具有许多许多其他组件)被拉
的的GameCanvas也是JPanel的内除了GameCanvas本身以外没有其他内容。
我运行我的程序,我可以看到我现在的时间在millis中,并且结尾有一些乱七八糟的数字,整个JFrame和所有包含的组件都是灰色的并且出了问题。
发生了什么事? O-o我之前用帆布做了很多东西,之前没有发生过这样的事情。 :/
不幸的是,这仍然不能解决问题。我在面板上设置了边框,并且完全按照您所描述的方式进行操作并不能解决问题。它绘制了绘图的第一个“循环”,然后再也不会重绘。 –
@BitCrash,另外,由于面板需要使用该对象来绘制边框,所以在方法的开始处处理Graphics对象并没有任何意义。 – camickr