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

Ern*_*dis 2 java graphics swing paintcomponent

怎么知道它paintComponent(Graphics g)完成了它的工作?

我可以:

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

还有其他方法吗?

Hov*_*els 5

你的问题是:

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

然后你在对这个问题的评论中说:

我创建了按钮(简单的JComponent),它必须首先淡出,然后执行actionlistener.actionPerformed(someEvent)

正如我所怀疑的那样,你似乎在paintComponent中做错了,因为淡出后面的驱动程序应该在这个方法中.这种方法应该快速,因为所有人都会离开,它应该在比喻"眨眼间"完成,并且不应该在其内部有任何延迟或褪色.相反,您可能会使用Swing Timer来更改按钮用于透明度的类字段,在每次状态更改后调用重绘,然后在Timer完成后,您调用代码执行您想要的任何操作.

有关更具体的帮助,请考虑创建和发布sscce.

  • ............主要的问题是,如果我将弹出窗口设置为可见,几毫秒我可以看到黄色,然后重新绘制为灰色.所以我必须... ==重定向从[ActionListener /更好的Swing Action到SwingWorker](http://stackoverflow.com/a/6186188/714968),更好的Runnable #Thread,然后没有任何鬼来自ActionPerformed中的代码延迟了重新绘制 (4认同)
  • 哈!现在你欠我的话:-P恭喜! (2认同)
  • 祝贺Pete @ 100k :) (2认同)
  • @HovercraftFullOfEels:祝贺达到世纪标志:-) (2认同)
  • @HovercraftFullOfEels三位数!做得好! (2认同)