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