繁体   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