当前位置: 技术问答>java相关
关于重画的问题
来源: 互联网 发布时间:2015-10-27
本文导语: 我在做一个应用,要根据鼠标的拖动重画整个Japanel: class MyPanel extends JPanel implements MouseMotionListener, MouseListener { public MyPanel() { addMouseMotionListener(this); addMouseListener(this); } public boolean isFocusTraversable() { ret...
我在做一个应用,要根据鼠标的拖动重画整个Japanel:
class MyPanel extends JPanel implements MouseMotionListener, MouseListener
{
public MyPanel()
{ addMouseMotionListener(this);
addMouseListener(this);
}
public boolean isFocusTraversable()
{
return(true);
}
public void update(Graphics g)
{ //super.paint(g);
//paint(g);
}
public void paint(Graphics g)
{
movepaint();//擦除所有原有图形
g.drawRect(newx,newy,25,25);
curx=newx;
cury=newy;
}
public void mouseDragged(MouseEvent e)
{
System.out.println("Dragged");
repaint();
}
public void mouseMoved(MouseEvent e)
{
}
public void mouseClicked(MouseEvent parm1)
{
}
}
现在的问题是:我不想自己编movepaint();即擦除所有原有图形的函数。我记得在C++
中有Invalidate()的函数,只要调用,就可以擦除所有原有图形。但在JAVA中我加入
Invalidate(),不起作用,它还是会显出所有以前的图形。
问:JAVA中有没有擦除所有原有图形的函数?
class MyPanel extends JPanel implements MouseMotionListener, MouseListener
{
public MyPanel()
{ addMouseMotionListener(this);
addMouseListener(this);
}
public boolean isFocusTraversable()
{
return(true);
}
public void update(Graphics g)
{ //super.paint(g);
//paint(g);
}
public void paint(Graphics g)
{
movepaint();//擦除所有原有图形
g.drawRect(newx,newy,25,25);
curx=newx;
cury=newy;
}
public void mouseDragged(MouseEvent e)
{
System.out.println("Dragged");
repaint();
}
public void mouseMoved(MouseEvent e)
{
}
public void mouseClicked(MouseEvent parm1)
{
}
}
现在的问题是:我不想自己编movepaint();即擦除所有原有图形的函数。我记得在C++
中有Invalidate()的函数,只要调用,就可以擦除所有原有图形。但在JAVA中我加入
Invalidate(),不起作用,它还是会显出所有以前的图形。
问:JAVA中有没有擦除所有原有图形的函数?
|
先Invalidate,在repaint();
|
repaint()方法,不要覆盖update(Graphics g)方法
|
vc里面的Invalidate()是置窗口无效,然后自动重画的。java里面的repaint()和他的功能相同。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。