如何知道它paintComponent(Graphics g)
已经完成了它的工作?
我可以:
@Override
public void paintComponent(Graphics g) {
try {
//Paint some stuff
} finally {
//Do something after painting
}
}
还有其他方法吗?
如何知道它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 Timer 更改按钮用于其透明度的类字段,在每次更改状态后调用 repaint,然后当Timer完成时,您调用代码执行您想要的任何操作。
如需更具体的帮助,请考虑创建和发布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();
方法的源代码吗?.. :))