【发布时间】:2010-12-30 17:12:13
【问题描述】:
我在鼠标位置绘制矩形时遇到了一些问题。移动鼠标时,绘制的矩形滞后于鼠标光标。有没有办法确保矩形在鼠标上准确移动并且不落后?
这是一个小例子,虽然因为这只是一个矩形,所以滞后非常轻微,但它就在那里。在较大的程序中,我一次绘制大量它们,但只移动一个。
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.*;
public class MouseTest {
JFrame window;
DrawPanel content;
public MouseTest(){
window = new JFrame("Test");
content = new DrawPanel();
window.setContentPane(content);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setVisible(true);
window.pack();
}
public static void main (String[] args){
MouseTest test = new MouseTest();
}
private class DrawPanel extends JPanel implements MouseMotionListener {
int mouseX;
int mouseY;
private DrawPanel(){
setBackground(Color.BLUE);
setPreferredSize(new Dimension(400,400));
addMouseMotionListener(this);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setColor(Color.RED);
g.fillRect(mouseX, mouseY, 20, 20);
}
@Override
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseMoved(MouseEvent e) {
mouseX = e.getX();
mouseY = e.getY();
repaint();
}
}
}
【问题讨论】:
-
是“双缓冲”选项的默认值吗? ...立即证明这一点