我目前正在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()都是非常沉重的。
THX b4
答案 0 :(得分:0)
调用repaint()并不意味着该组件将立即重新绘制。此调用只是将一个条目放入重绘请求队列中,该队列可能在许多情况下与其他条目合并。
如果您怀疑repaint()
可能过于频繁地调用,请使用接受最大时间的版本,之后应该重新绘制对象。例如,如果您在同一秒内拨打button.repaint(1000)
100次,则只会重新绘制一次。您也可以指定应该重新绘制的区域(而不是整个屏幕),但这只适用于您的实现通过这种部分重绘实际上减少了工作量。
此外,您可以在btnExit
而不是整个应用程序框架上调用重绘。