Этот фрагмент явно устарел и неверен; кроме того, вы должны поместить его обратно в некоторый контекст (я думаю, MeaningOfLifeFinder
определено внутри другого класса).
Он не скомпилируется, поскольку BackgroundListener
не существует (должно быть BackgroundWorker
) и является классом, а не интерфейсом, поэтому implements
здесь неверно.
Я думаю, что фрагмент должен выглядеть следующим образом:
class Something {
final JLabel label;
Something() {
// Instantiate label here
}
class MeaningOfLifeFinder implements BackgroundWorker {
public void doInBackground(BackgroundEvent evt) {
String meaningOfLife = findTheMeaningOfLife();
evt.getWorker().publish(meaningOfLife);
}
public void process(BackgroundEvent evt) {
label.setText("" + evt.getData());
}
public void done(BackgroundEvent evt) {}
public void started(BackgroundEvent evt) {}
}
void someAction() {
(new MeaningOfLifeFinder()).execute();
}
}
Это должно работать лучше. В этом случае вы сразу увидите, как экземпляр MeaningOfLifeFinder
сможет получить доступ к метке (поскольку он может получить доступ к любому члену своего класса встраивания).
Вам просто нужно убедиться, что someAction()
как-то вызывается (например, из-за действий пользователя).