簡體   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