嗨,所以最近我想在Java中創建自己的接口並討厭Windows滾動條(我添加了JList)。所以我決定模仿Facebook的滾動條(因爲遇到這個問題還沒有完成)。在paintComponent()中調用repaint()使用的CPU太多
所以問題基本上就是標題。因此,當我在paintComponent()中調用repaint()時,我幾乎看到CPU使用率猛增,出現了一個簡單的界面。但我發現有必要這樣做,否則我的滾動條將不會被重新繪製。
我的CPU是一個i7 3770,程序使用15%,這不是很多,但它的功能相當多。但是,當我不打電話repaint()它使用大約1%,這是我想要它在。
因此,這裏是我的paintComponent()代碼:
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (pane.getViewport().getViewRect().getSize().equals(getSize())) return;
double percentageScrolled = (double) pane.getVerticalScrollBar().getValue()/(pane.getVerticalScrollBar().getMaximum() - pane.getVerticalScrollBar().getModel().getExtent());
int x = pane.getBounds().width - 11, y = pane.getViewport().getViewPosition().y + 3 + ((int) ((pane.getBounds().height - SCROLL_BAR.getHeight(null) - 9) * percentageScrolled));
repaint(pane.getViewport().getViewRect());
g.drawImage(SCROLL_BAR, x, y, null);
}
以下是發生了什麼視頻的鏈接時,我不叫重繪()
https://www.youtube.com/watch?v=OMXVB7REFHk&feature=youtu.be
所以在該視頻當我滾動時,我必須點擊選項/值來重新繪製滾動條。
您已經在重新粉刷。當你做這個時,你不需要再要求塗料。 – EJP