我为gui程序编写了代码。
在这个程序中,有一个SwingWorker可以找到固定数字之前的素数。每个素数都会发布和打印。 在计算过程中更新,因此启动了一个事件PropertyChangeEvent。
ChangePropertyListener必须使用SwingWorker的进度值更新JProgressBar。
在ChangePropertyListener中,我不明白如何获得进步的价值:
有人可以告诉我这些差异并解释getNewValue()是什么(我还看过Doc,但它不是那么富有表现力)?
答案 0 :(得分:3)
他们俩有不同的目的。调用SwingWorker.getProgress会返回SwingSorker实例的当前进度,如名称所示。当坚持SwingWorker.setProgress(int)的约定时,相应的getter总是返回0到100之间的值。您可以随时调用此方法,并且您将始终获得工作人员的最新状态。任何知道特定SwingWorker实例的客户端代码都可以随时调用该方法。
另一方面,PropertyChangeEvent.getNewValue()返回与getProgress相同的值。要调用此方法,您必须先调用PropertyChangeListener来注册SwingWorker.addPropertyChangeListener(PropertyChangeListener)。一旦这样的倾听者注册,它将接收有关工人进度的更新。现在有三个微妙的差异:
总之,只要您想在拉动的基础上获得工作人员进度,即主动请求该值,就使用getProgress。每当您想要了解进度变化时,请使用PropertyChangeListener方法,并且无法获知有关进度的每个变化的信息。