如何检测Java应用程序(Windows操作系统)中的重新绘制区域?

时间:2013-06-21 08:03:58

标签: java windows java-2d

我正在Windows 8下的Java应用程序中调试图形更新。

Mac用户Quartz Debug可以实时更新屏幕区域。这允许确定重绘频率和错误更新 - 有时只有一小块区域需要重新绘制,但整个窗口重新绘制。该应用程序甚至会显示接收内容不变的更新的区域。

是否有类似的Windows调试工具允许我检测重新绘制的区域?

1 个答案:

答案 0 :(得分:1)

同时我找到了JXLayer,一个带有BSD许可证的SwingLabs子项目。在将jxlayer-3.0.4.jar包含到我的项目库中之后,我能够重新绘制动画。如果您有JFrame和JPanel,请使用:

JFrame frame = ...;
JPanel panel = ...;
if (DEBUG_REPAINT) {
    JXLayer<JPanel> layer = new JXLayer<>(panel);
    DebugRepaintingUI dp = new DebugRepaintingUI(50); // 50ms delay
    layer.setUI(dp);
    frame.setContentPane(layer);
}
else {
    frame.setContentPane(panel);
}                   }

默认情况下,DebugRepaintingUI在XORMode中绘制更改的区域,但我可以调整源以创建不那么突兀的效果。

这种方法存在实际修改应用程序的问题。也许有人有更好的主意。