繁体   English   中英

在Java onPaint()上调用Repaint()

[英]Calling Repaint() on Java onPaint()

我目前正在用Java为具有完整图形的按钮(没有JButton)实现鼠标悬停脚本。 这是我的代码:

@Override
public void mouseMoved(MouseEvent e){
    if (btnExit.getBound().contains(e.getX(), e.getY())){
        btnExit.setStatus(BUTTON_STATE.HOVER);
    } else {
        btnExit.setStatus(BUTTON_STATE.IDLE);
    }
    System.getInstance().repaint();
}

当鼠标移动时,总是会调用repaint方法。

问题是>悬停操作是否很好的实现? 还是有更好的实现? 因为我认为每次鼠标移动都会调用repaint(),因此计算量很大。

THX b4

调用repaint()并不意味着将立即重新绘制组件。 该调用只是将条目放置在重画请求队列中,在许多情况下,这些条目可以与其他条目合并。

如果您怀疑repaint()可能被调用得太频繁了,请使用可接受最长时间的版本来重新绘制对象。 例如,如果您在同一秒内调用button.repaint(1000) 100次,它将仅被重新绘制一次。 您还可以指定应该重新粉刷的区域(而不是整个屏幕),但这仅在您的实现在这种部分重新粉刷中确实做得更少的情况下才有效。

另外,您可以在btnExit而不是整个应用程序框架上调用重绘。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM