簡體   English   中英

如何強制Jpanel立即用Java重新繪制?

[英]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()方法,並在完成繪制后使其退出特殊狀態。

因此,擴展的JPanelpaintComponent()方法如下所示:

 @Override
 public void paintComponent( Graphics g ) 
 {
        super.paintComponent( g );
        resetBoo();
 }

其中resetBoo()是執行boo = true;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM