我在swing中有以下问题。
我正在执行基本的绘图操作(线条,形状)。当我按下左键移动鼠标时,我需要重新绘制当前形状。所以我清除了屏幕并重新绘制了已经绘制的形状和当前正在绘制的形状。
形状是在paint()
方法中绘制的,在鼠标移动事件中我调用repaint()
(paint()
自动调用)。问题是每次重绘时屏幕都会强烈闪烁,看起来真的很难看。请告诉我,我做错了什么?谢谢。
我想你正在寻找的是双重缓冲。
在paint()中绘制形状
自定义绘制应该在paintComponent()方法中完成,并确保在第一行调用super.paintComponent()。
自定义绘制也可以在JPanel(或JComponent)上完成,而不是直接在JFrame上完成。
我有闪烁或闪烁问题。我用下面的代码解决了这个问题。
public void update(Graphics g) {
paint(g);
}
@Override
public void paint(Graphics g) {
//super.repaint();
if (myimg != null) {
g.drawImage(myimg, 0, 0, this);
}
//update(g);
}
你不需要清除屏幕,你只需要调用repaint()就足够了。如果你必须清除屏幕,如果你不使用同步,它会闪烁,因为绘画工作是在一个单独的线程中完成的。