簡體   English   中英

如何知道paintComponent(Graphics g)已經完成工作(Java)?

[英]How to know that paintComponent(Graphics g) has finished it's job (Java)?

如何知道paintComponent(Graphics g)已經完成工作?

我可以:

 @Override
 public void paintComponent(Graphics g) {
    try {
         //Paint some stuff
    } finally {
         //Do something after painting
    }
 }

還有其他辦法嗎?

您的問題是:

如何知道paintComponent(Graphics g)已經完成工作?

然后,您對問題進行評論:

我創建了按鈕(簡單的JComponent),它必須首先淡出,然后立即執行actionlistener.actionPerformed(someEvent)

正如我懷疑,你會因為后面的淡出應該是這個方法的內部驅動程序中做一些錯誤的paintComponent內。 該方法應盡快解決,應在具有象征意義的“眨眼之間”完成,並且內部不應有任何延遲或褪色。 相反,您可能會使用Swing計時器來更改按鈕用於其透明性的類字段,在每次狀態更改后調用重繪,然后在完成計時器后,調用代碼執行所需的任何操作。

要獲得更具體的幫助,請考慮創建和發布sscce

我喜歡SwingWorker文檔中的以下示例:

   final JLabel label;
   class MeaningOfLifeFinder extends SwingWorker<String, Object> {
       @Override
       public String doInBackground() {
           return findTheMeaningOfLife();
       }

       @Override
       protected void done() {
           try { 
               label.setText(get());
           } catch (Exception ignore) {
           }
       }
   }

   (new MeaningOfLifeFinder()).execute();

這個簡單的示例在進行一些修改后可能對我的情況非常有幫助。 PS有人知道findTheMeaningOfLife();的源代碼findTheMeaningOfLife(); 上面的方法?.. :))

暫無
暫無

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

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