0
我有一个简单的事情,我正在用Java进行测试。Java JFrame setSize诱发滞后
package us.superdisk.Teststs;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.MouseInfo;
import java.awt.PointerInfo;
import javax.swing.*;
public class Main
{
public static void main(String[] argv) {
JFrame jf = new JFrame("test");
jf.setVisible(true);
//jf.setSize(new Dimension(512, 512));
Graphics g = jf.getGraphics();
PointerInfo a;
while (true) {
a = MouseInfo.getPointerInfo();
g.drawLine(0, 50, (int)a.getLocation().getX(), (int)a.getLocation().getY());
}
}
}
这会在鼠标光标上绘制一条线。
当它被创建时,窗口非常小且不可见,您必须调整它的大小才能看到该行。但是,绘制的线条平滑流畅。
当您取消对setSize
位的注释时,线条绘制比没有绘制更为复杂......这对我来说没有多大意义?问题是什么?
对于同一个任务,你应该实现一个'MouseMotionListener',它比在无限循环中轮询更有效率。 – 2013-02-23 16:24:43
哎呀,还有那个! – 2013-02-23 16:25:46
永远不要通过getGraphics()在组件上获得图形(除非在特殊情况下,例如打印或需要在BufferedImage上绘制组件)。教程将告诉你最好的方法来做到这一点。 – 2013-02-23 16:26:19