0

I'm currently implementing a mousehover script in Java for a button with full graphics (no JButton). here's my piece of code:

@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();
}

the repaint method is always called when my mouse moves.

The question is > is it a good implementation for the hover action? or are there better implementations? because I thought that calling repaint() everytime my mouse move is quite heavy in computation.

THX b4

4

1 回答 1

0

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

如果您怀疑repaint()可能被调用的方式过于频繁,请使用接受最大时间的版本,之后应该重新绘制对象。例如,如果您button.repaint(1000)在同一秒内调用 100 次,则只会重新绘制一次。您还可以指定应该重新绘制的区域(而不是整个屏幕),但这只有在您的实现确实对这种部分重新绘制的工作量较少时才有效。

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

于 2013-03-16T16:12:37.857 回答