[英]How can I force Jpanel to immediately repaint in Java?
這是我的代碼
boolean boo = true;
ItemListener itemListener = new ItemListener() {
public void itemStateChanged(ItemEvent event) {
boo= false;
aSwingObj.repaint();
boo = true;
}
}
我希望在boo設置為false之前運行repaint()方法,然后將其變為true。
問題在於,僅在將變量boo再次設置為true后才執行repaint()函數。 我嘗試了其他方法,例如revalidate(),validate(),但沒有用。 我應該如何修正我的代碼?
這是一個XY問題 。 您不想強迫JPanel立即重新繪制。 您想要在繪畫開始之前立即進入特定狀態,並在繪畫結束后立即退出該狀態。
實際上,實現此目標的一種方法是進入該狀態,當場強制重新粉刷,然后退出該狀態。 但是正如您所看到的,這有點難以實現。
因此,另一種方法是創建一個新類,該類確實extend JPanel
(或aSwingObj
任何類),以便您可以重寫paintComponent()
方法,並在完成繪制后使其退出特殊狀態。
因此,擴展的JPanel
的paintComponent()
方法如下所示:
@Override
public void paintComponent( Graphics g )
{
super.paintComponent( g );
resetBoo();
}
其中resetBoo()
是執行boo = true;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.