Spec-Zone.ru › OpenJavaFX 24

Класс Task<V>

java.lang.Object
java.util.concurrent.FutureTask<V>
javafx.concurrent.Task<V>
Параметры типа:
V - Тип результата, возвращаемый методом getValue этого Task
Все реализованные интерфейсы:
Runnable, Future<V>, RunnableFuture<V>, Worker<V>, EventTarget
public abstract class Task<V> extends FutureTask<V> implements Worker<V>, EventTarget

Полностью наблюдаемая реализация FutureTask. Task предоставляет дополнительное состояние и наблюдаемые свойства, полезные для программирования асинхронных задач в JavaFX, как определено в интерфейсе Worker. Реализация Task должна переопределить метод call(). Этот метод вызывается в фоновом потоке. Любое состояние, используемое в этом методе, должно быть безопасно для чтения и записи из фонового потока. Например, манипулирование живой графической сценой из этого метода небезопасно и приведет к исключениям во время выполнения.

Задачи гибкие и чрезвычайно полезны для инкапсуляции «работы». Поскольку Service предназначен для выполнения Task, любые задачи, определенные кодом приложения или библиотеки, легко могут быть использованы с Service. Аналогично, так как Task расширяет FutureTask, очень легко и естественно использовать Task с API конкурентного программирования Java Executor. Поскольку Task реализует Runnable, вы также можете вызвать его напрямую (вызвав метод FutureTask.run()) из другого фонового потока. Это позволяет для композиции работы или передачи ее в новый созданный и выполненный вручную поток. Наконец, поскольку вы можете вручную создать новый поток, передав ему Runnable, можно использовать следующий фрагмент кода:


         Thread th = new Thread(task);
         th.setDaemon(true);
         th.start();
     

Обратите внимание, что этот код устанавливает флаг демон-потока в true. Если вы хотите, чтобы фоновый поток предотвращал выход VM после закрытия последней стадии, то вам нужно установить daemon в false. Однако, если вы хотите, чтобы фоновые потоки просто завершились после закрытия всех стадий, то вам нужно установить daemon в true.

Хотя ExecutorService определяет несколько методов, принимающих Runnable, вам обычно следует ограничиться использованием метода execute, унаследованного от Executor.

Как и FutureTask, Task — это одноразовый класс и не может быть повторно использован. См. Service для повторно используемого Worker.

Поскольку Task предназначен для использования с приложениями JavaFX GUI, он гарантирует, что каждое изменение его общедоступных свойств, а также уведомления о состоянии, ошибках и обработчиках событий происходят в главном потоке JavaFX приложения. Доступ к этим свойствам из фонового потока (включая метод call()) приведет к возникновению исключений во время выполнения. Единственное исключение из этого правила — первоначальная настройка Task, которая может безопасно выполняться из любого потока. Однако после инициализации и запуска Task она может использоваться только из потока FX (за исключением тех методов, которые явно помечены как подходящие для вызова подклассом из фонового потока).

Настоятельно рекомендуется, чтобы все Task инициализировались неизменяемым состоянием, на котором будет работать Task. Это должно быть сделано путем предоставления конструктора Task, который принимает параметры, необходимые для выполнения Task. Неизменяемое состояние упрощает и обеспечивает безопасность использования из любого потока и гарантирует корректность при наличии нескольких потоков.

В Java нет надежного способа «убить» поток в процессе. Однако, когда вызывается метод cancel для Task, важно, чтобы Task прекратил обработку. «Неуправляемая» задача может продолжать обработку и обновление свойств сообщения, текста и прогресса даже после отмены Task! В Java отмена Task — это совместное усилие. Пользователь Task запросит отмену, и автор Task должен проверить, была ли отмена внутри тела метода call. Это можно сделать двумя способами. Во-первых, автор Task может проверить метод isCancelled, унаследованный от FutureTask, чтобы узнать, была ли задача отменена. Во-вторых, если реализация Task использует какие-либо блокирующие вызовы (например, NIO InterruptibleChannels или Thread.sleep) и задача отменяется во время такого блокирующего вызова, выбрасывается InterruptedException. Реализации Task, использующие блокирующие вызовы, должны понимать, что прерванный поток может быть сигналом об отмене задачи, и должны дважды проверить метод isCancelled, чтобы убедиться, что InterruptedException был вызван из-за отмены Task.

Примеры

Следующий набор примеров демонстрирует некоторые из наиболее распространенных способов использования Task.

Простой цикл

Первый пример — простой цикл, который не выполняет ничего особенно полезного, но демонстрирует основные аспекты правильного написания Task. Этот пример просто будет циклировать и выводить в стандартный вывод на каждой итерации цикла. По завершении он возвращает количество итераций.


     Task<Integer> task = new Task<Integer>() {
         @Override protected Integer call() throws Exception {
             int iterations;
             for (iterations = 0; iterations < 100000; iterations++) {
                 if (isCancelled()) {
                     break;
                 }
                 System.out.println("Iteration " + iterations);
             }
             return iterations;
         }
     };
 

Сначала мы определяем тип значения, возвращаемого этой задачей. В данном случае мы хотим вернуть количество итераций, поэтому мы укажем Task как тип Integer с помощью дженериков. Затем внутри реализации метода call мы итерируем от 0 до 100000. На каждой итерации мы проверяем, была ли эта задача отменена. Если она была, то мы выходим из цикла и возвращаем количество итераций. В противном случае сообщение выводится в консоль, счетчик итераций увеличивается, и мы продолжаем цикл.

Проверка isCancelled() в теле цикла имеет решающее значение; в противном случае разработчик может отменить задачу, но задача продолжит выполняться и обновлять прогресс, возвращая неверный результат из конца метода call. Правильная реализация Task всегда проверяет отмену.

Простой цикл с уведомлениями о прогрессе

Аналогично предыдущему примеру, но на этот раз мы изменим прогресс Task на каждой итерации. Обратите внимание, что у нас есть выбор в случае отмены. Хотим ли мы установить прогресс обратно в -1 (неопределенный) при отмене Task или хотим оставить прогресс на месте? В этом случае давайте оставим прогресс неизменным и обновим только сообщение об отмене, хотя обновление прогресса после отмены — это вполне допустимый выбор.


     Task<Integer> task = new Task<Integer>() {
         @Override protected Integer call() throws Exception {
             int iterations;
             for (iterations = 0; iterations < 10000000; iterations++) {
                 if (isCancelled()) {
                     updateMessage("Cancelled");
                     break;
                 }
                 updateMessage("Iteration " + iterations);
                 updateProgress(iterations, 10000000);
             }
             return iterations;
         }
     };
 

Как и раньше, внутри цикла for мы проверяем, была ли задача отменена. Если она была отменена, мы обновим сообщение Task, чтобы указать, что она была отменена, и затем прервемся, как и раньше. Если Task не была отменена, мы обновим ее сообщение, указав текущую итерацию, и обновим прогресс, указав текущий прогресс.

Простой цикл с уведомлениями о прогрессе и блокирующими вызовами

Этот пример добавляет к предыдущим примерам блокирующий вызов. Поскольку блокирующий вызов может вызвать InterruptedException, а InterruptedException может возникнуть в результате отмены задачи, нам нужно убедиться, что мы обрабатываем InterruptedException и проверяем состояние отмены.


     Task<Integer> task = new Task<Integer>() {
         @Override protected Integer call() throws Exception {
             int iterations;
             for (iterations = 0; iterations < 1000; iterations++) {
                 if (isCancelled()) {
                     updateMessage("Cancelled");
                     break;
                 }
                 updateMessage("Iteration " + iterations);
                 updateProgress(iterations, 1000);

                 // Now block the thread for a short time, but be sure
                 // to check the interrupted exception for cancellation!
                 try {
                     Thread.sleep(100);
                 } catch (InterruptedException interrupted) {
                     if (isCancelled()) {
                         updateMessage("Cancelled");
                         break;
                     }
                 }
             }
             return iterations;
         }
     };
 

Здесь мы добавили в тело цикла вызов Thread.sleep. Поскольку это блокирующий вызов, я должен обработать потенциальное исключение InterruptedException. В блоке catch я проверю, была ли отменена задача, и если да, обновим сообщение соответствующим образом и выйдем из цикла.

Задача, принимающая параметры

Большинство Task требуют некоторых параметров для выполнения полезной работы. Например, DeleteRecordTask требует объекта или первичного ключа для удаления из базы данных. ReadFileTask требует URI файла, который нужно прочитать. Поскольку Task работают в фоновом потоке, необходимо позаботиться о том, чтобы тело метода call не считывало и не изменяло общее состояние. Два наиболее полезных подхода для этого: использование конечных переменных и передача переменных в Task во время построения.

При использовании Task в качестве анонимного класса наиболее естественный способ передачи параметров в Task — использование конечных переменных. В этом примере мы передаем задаче общее количество итераций, которые должна выполнить задача.


     final int totalIterations = 9000000;
     Task<Integer> task = new Task<Integer>() {
         @Override protected Integer call() throws Exception {
             int iterations;
             for (iterations = 0; iterations < totalIterations; iterations++) {
                 if (isCancelled()) {
                     updateMessage("Cancelled");
                     break;
                 }
                 updateMessage("Iteration " + iterations);
                 updateProgress(iterations, totalIterations);
             }
             return iterations;
         }
     };
 

Поскольку totalIterations является конечным, метод call может безопасно прочитать и сослаться на него из фонового потока.

При написании библиотек Task (в отличие от реализаций для конкретного использования) нам нужно использовать другой подход. В этом случае я создам IteratingTask, который выполняет ту же работу, что и выше. На этот раз, поскольку IteratingTask определен в отдельном файле, ему необходимо передать параметры в конструкторе. Эти параметры присваиваются конечным переменным.


     public class IteratingTask extends Task<Integer> {
         private final int totalIterations;

         public IteratingTask(int totalIterations) {
             this.totalIterations = totalIterations;
         }

         @Override protected Integer call() throws Exception {
             int iterations = 0;
             for (iterations = 0; iterations < totalIterations; iterations++) {
                 if (isCancelled()) {
                     updateMessage("Cancelled");
                     break;
                 }
                 updateMessage("Iteration " + iterations);
                 updateProgress(iterations, totalIterations);
             }
             return iterations;
         }
     }
 

А затем, при использовании:


     IteratingTask task = new IteratingTask(8000000);
 

Таким образом, параметры передаются в IteratingTask безопасным способом, и снова являются конечными. Таким образом, метод call может безопасно прочитать это состояние из фонового потока.

ПРЕДУПРЕЖДЕНИЕ: Не передавайте изменяемое состояние в Task и затем работайте с ним из фонового потока. Это может привести к возникновению гонок. В частности, предположим, что у вас есть SaveCustomerTask, который принимает Customer в конструкторе. Хотя SaveCustomerTask может иметь конечную ссылку на Customer, если объект Customer изменяемый, то существует вероятность того, что как SaveCustomerTask, так и некоторый другой код приложения будут читать или изменять состояние Customer из разных потоков. Будьте очень осторожны в таких случаях, когда изменяемый объект, такой как Customer, используется из фонового потока, чтобы он не использовался также из другого потока. В частности, если фоновый поток считывает данные из базы данных и обновляет объект Customer, а объект Customer связан с узлами графической сцены (такими как элементы пользовательского интерфейса), то может произойти нарушение правил многопоточности! Для таких случаев изменяйте объект Customer из потока FX приложения, а не из фонового потока.


     public class UpdateCustomerTask extends Task<Customer> {
         private final Customer customer;

         public UpdateCustomerTask(Customer customer) {
             this.customer = customer;
         }

         @Override protected Customer call() throws Exception {
             // pseudo-code:
             //   query the database
             //   read the values

             // Now update the customer
             Platform.runLater(new Runnable() {
                 @Override public void run() {
                     customer.setFirstName(rs.getString("FirstName"));
                     // etc
                 }
             });

             return customer;
         }
     }
 

Задача, не возвращающая значение

Многие, если не большинство, задачи должны возвращать значение по завершении. Для задач CRUD можно ожидать, что задача «Создать» вернёт вновь созданный объект или первичный ключ, задача «Читать» — прочитанный объект, задача «Обновить» — количество обновлённых записей, а задача «Удалить» — количество удалённых записей.

Однако иногда просто нет ничего действительно полезного для возврата. Например, у меня может быть задача, которая записывает в файл. Задача имеет встроенный механизм для указания того, выполнена ли она успешно или неудачно, а также количество записанных байтов (прогресс), и поэтому для меня действительно нет ничего, что нужно вернуть. В таком случае вы можете использовать тип Void. Это специальный тип в языке Java, которому можно назначить значение null. Вы бы использовали его следующим образом:


     final String filePath = "/foo.txt";
     final String contents = "Some contents";
     Task<Void> task = new Task<Void>() {
         @Override protected Void call() throws Exception {
             File file = new File(filePath);
             FileOutputStream out = new FileOutputStream(file);
             // ... and other code to write the contents ...

             // Return null at the end of a Task of type Void
             return null;
         }
     };
 

Задача, возвращающая ObservableList

Поскольку ListView, TableView и другие элементы пользовательского интерфейса и узлы графа сцены используют ObservableList, часто возникает необходимость создать и вернуть ObservableList из задачи. Если вы не хотите отображать промежуточные значения, самый простой способ правильно написать такую задачу — просто создать ObservableList в методе call, а затем вернуть его по завершении задачи.


     Task<ObservableList<Rectangle>> task = new Task<ObservableList<Rectangle>>() {
         @Override protected ObservableList<Rectangle> call() throws Exception {
             updateMessage("Creating Rectangles");
             ObservableList<Rectangle> results = FXCollections.observableArrayList();
             for (int i=0; i<100; i++) {
                 if (isCancelled()) break;
                 Rectangle r = new Rectangle(10, 10);
                 r.setX(10 * i);
                 results.add(r);
                 updateProgress(i, 100);
             }
             return results;
         }
     };
 

В приведенном выше примере мы собираемся создать 100 прямоугольников и вернуть их из этой задачи. ObservableList создается внутри метода call, заполняется и затем возвращается.

Задача, возвращающая частичные результаты

Иногда вы хотите создать задачу, которая будет возвращать частичные результаты. Возможно, вы строите сложный граф сцены и хотите отображать граф сцены по мере его построения. Или, возможно, вы читаете большое количество данных через сеть и хотите отображать записи в TableView по мере поступления данных. В таких случаях доступно некоторое совместное состояние, доступное как потоку приложения FX, так и фоновому потоку. Необходимо соблюдать особую осторожность, чтобы **никогда не обновлять совместное состояние из любого потока, кроме потока приложения FX**.

Самый простой способ сделать это — воспользоваться методом updateValue(Object). Этот метод может вызываться многократно из фонового потока. Обновления объединяются, чтобы предотвратить переполнение очереди событий FX. Это означает, что вы можете вызывать его так часто, как хотите из фонового потока, но в конечном итоге устанавливается только самый последний набор.


     Task<Long> task = new Task<Long>() {
         @Override protected Long call() throws Exception {
             long a = 0;
             long b = 1;
             for (long i = 0; i < Long.MAX_VALUE; i++) {
                 updateValue(a);
                 a += b;
                 b = a - b;
             }
             return a;
         }
     };
 

Другой способ сделать это — предоставить новое свойство в задаче, которое будет представлять частичный результат. Затем убедитесь, что используете Platform.runLater при обновлении частичного результата.


     Task<Long> task = new Task<Long>() {
         @Override protected Long call() throws Exception {
             long a = 0;
             long b = 1;
             for (long i = 0; i < Long.MAX_VALUE; i++) {
                 final long v = a;
                 Platform.runLater(new Runnable() {
                     @Override public void run() {
                         updateValue(v);
                     }
                 }
                 a += b;
                 b = a - b;
             }
             return a;
         }
     };
 

Предположим, вместо обновления одного значения вы хотите заполнить ObservableList результатами по мере их получения. Один из подходов заключается в предоставлении нового свойства в задаче, которое будет представлять частичный результат. Затем убедитесь, что используете Platform.runLater при добавлении новых элементов в частичный результат.


     public class PartialResultsTask extends Task<ObservableList<Rectangle>> {
         // Uses Java 7 diamond operator
         private ReadOnlyObjectWrapper<ObservableList<Rectangle>> partialResults =
                 new ReadOnlyObjectWrapper<>(this, "partialResults",
                         FXCollections.observableArrayList(new ArrayList<Rectangle>()));

         public final ObservableList<Rectangle> getPartialResults() { return partialResults.get(); }
         public final ReadOnlyObjectProperty<ObservableList<Rectangle>> partialResultsProperty() {
             return partialResults.getReadOnlyProperty();
         }

         @Override protected ObservableList<Rectangle> call() throws Exception {
             updateMessage("Creating Rectangles...");
             for (int i=0; i<100; i++) {
                 if (isCancelled()) break;
                 final Rectangle r = new Rectangle(10, 10);
                 r.setX(10 * i);
                 Platform.runLater(new Runnable() {
                     @Override public void run() {
                         partialResults.get().add(r);
                     }
                 });
                 updateProgress(i, 100);
             }
             return partialResults.get();
         }
     }
 

Задача, изменяющая граф сцены

Как правило, задачи не должны взаимодействовать напрямую с пользовательским интерфейсом. Это создает тесную связь между конкретной реализацией задачи и конкретной частью вашего пользовательского интерфейса. Однако, когда вам нужно создать такую связь, вы должны убедиться, что используете Platform.runLater, чтобы любые изменения графа сцены происходили в потоке приложения FX.


     final Group group = new Group();
     Task<Void> task = new Task<Void>() {
         @Override protected Void call() throws Exception {
             for (int i=0; i<100; i++) {
                 if (isCancelled()) break;
                 final Rectangle r = new Rectangle(10, 10);
                 r.setX(10 * i);
                 Platform.runLater(new Runnable() {
                     @Override public void run() {
                         group.getChildren().add(r);
                     }
                 });
             }
             return null;
         }
     };
 

Общий отклик на изменения состояния

Иногда вам может понадобиться написать задачу, которая обновляет свой прогресс, сообщение, текст или каким-либо другим способом реагирует всякий раз, когда происходит изменение состояния задачи. Например, вы можете изменить сообщение о состоянии задачи при изменении состояния задачи на «Ошибка», «Успех», «Запуск» или «Отмена».


     Task<Integer> task = new Task<Integer>() {
         @Override protected Integer call() throws Exception {
             int iterations = 0;
             for (iterations = 0; iterations < 100000; iterations++) {
                 if (isCancelled()) {
                     break;
                 }
                 System.out.println("Iteration " + iterations);
             }
             return iterations;
         }

         @Override protected void succeeded() {
             super.succeeded();
             updateMessage("Done!");
         }

         @Override protected void cancelled() {
             super.cancelled();
             updateMessage("Cancelled!");
         }

         @Override protected void failed() {
             super.failed();
             updateMessage("Failed!");
         }
     };
 
Since:
JavaFX 2.0

Краткое описание вложенных классов

Вложенные классы/интерфейсы, объявленные в интерфейсе java.util.concurrent.Future

Future.State

Вложенные классы/интерфейсы, объявленные в интерфейсе javafx.concurrent.Worker

Worker.State

Краткое описание свойств

Тип Свойство Описание
final ReadOnlyObjectProperty<Throwable> exception
Получает ReadOnlyObjectProperty, представляющий любую произошедшую ошибку.
final ReadOnlyStringProperty message
Получает ReadOnlyStringProperty, представляющую сообщение.
final ObjectProperty<EventHandler<WorkerStateEvent>> onCancelled
Обработчик события onCancelled вызывается всякий раз, когда состояние задачи переходит в состояние CANCELLED.
final ObjectProperty<EventHandler<WorkerStateEvent>> onFailed
Обработчик события onFailed вызывается всякий раз, когда состояние задачи переходит в состояние FAILED.
final ObjectProperty<EventHandler<WorkerStateEvent>> onRunning
Обработчик события onRunning вызывается всякий раз, когда состояние задачи переходит в состояние RUNNING.
final ObjectProperty<EventHandler<WorkerStateEvent>> onScheduled
Обработчик события onSchedule вызывается всякий раз, когда состояние задачи переходит в состояние SCHEDULED.
final ObjectProperty<EventHandler<WorkerStateEvent>> onSucceeded
Обработчик события onSucceeded вызывается всякий раз, когда состояние задачи переходит в состояние SUCCEEDED.
final ReadOnlyDoubleProperty progress
Получает ReadOnlyDoubleProperty, представляющий прогресс.
final ReadOnlyBooleanProperty running
Получает ReadOnlyBooleanProperty, представляющий, работает ли Worker.
final ReadOnlyObjectProperty<Worker.State> state
Получает ReadOnlyObjectProperty, представляющий текущее состояние.
final ReadOnlyStringProperty title
Получает ReadOnlyStringProperty, представляющую заголовок.
final ReadOnlyDoubleProperty totalWork
Получает ReadOnlyDoubleProperty, представляющий максимальное количество работы, которое нужно выполнить.
final ReadOnlyObjectProperty<V> value
Получает ReadOnlyObjectProperty, представляющий значение.
final ReadOnlyDoubleProperty workDone
Получает ReadOnlyDoubleProperty, представляющий текущий прогресс.

Краткое описание конструкторов

Конструктор Описание
Task()
Создает новую задачу.

Краткое описание методов

Модификатор и тип Метод Описание
final <T extends Event>
void
addEventFilter(EventType<T> eventType, EventHandler<? super T> eventFilter)
Регистрирует фильтр событий для данного целевого объекта.
final <T extends Event>
void
addEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler)
Регистрирует обработчик событий для данного целевого объекта.
EventDispatchChain buildEventDispatchChain(EventDispatchChain tail)
Создаёт цепочку обработки событий для данного целевого объекта.
protected abstract V call()
Вызывается при выполнении задачи; метод call должен быть переопределён и реализован подклассами.
final boolean cancel()
Завершает выполнение данного рабочего потока.
protected void cancelled()
Защищённый вспомогательный метод для подклассов, вызываемый всякий раз, когда состояние задачи изменяется на CANCELLED.
final ReadOnlyObjectProperty<Throwable> exceptionProperty()
Возвращает ReadOnlyObjectProperty, представляющий любую произошедшую исключительную ситуацию.
protected void failed()
Защищённый вспомогательный метод для подклассов, вызываемый всякий раз, когда состояние задачи изменяется на FAILED.
final void fireEvent(Event event)
Вызывает указанное событие.
final Throwable getException()
Возвращает значение свойства exception.
final String getMessage()
Возвращает значение свойства message.
final EventHandler<WorkerStateEvent> getOnCancelled()
Обработчик события onCancelled вызывается всякий раз, когда состояние задачи изменяется на CANCELLED.
final EventHandler<WorkerStateEvent> getOnFailed()
Обработчик события onFailed вызывается всякий раз, когда состояние задачи изменяется на FAILED.
final EventHandler<WorkerStateEvent> getOnRunning()
Обработчик события onRunning вызывается всякий раз, когда состояние задачи изменяется на RUNNING.
final EventHandler<WorkerStateEvent> getOnScheduled()
Обработчик события onSchedule вызывается всякий раз, когда состояние задачи изменяется на SCHEDULED.
final EventHandler<WorkerStateEvent> getOnSucceeded()
Обработчик события onSucceeded вызывается всякий раз, когда состояние задачи изменяется на SUCCEEDED.
final double getProgress()
Возвращает значение свойства progress.
final Worker.State getState()
Возвращает значение свойства state.
final String getTitle()
Возвращает значение свойства title.
final double getTotalWork()
Возвращает значение свойства totalWork.
final V getValue()
Возвращает значение свойства value.
final double getWorkDone()
Возвращает значение свойства workDone.
final boolean isRunning()
Возвращает значение свойства running.
final ReadOnlyStringProperty messageProperty()
Возвращает ReadOnlyStringProperty, представляющий сообщение.
final ObjectProperty<EventHandler<WorkerStateEvent>> onCancelledProperty()
Обработчик события onCancelled вызывается всякий раз, когда состояние задачи изменяется на CANCELLED.
final ObjectProperty<EventHandler<WorkerStateEvent>> onFailedProperty()
Обработчик события onFailed вызывается всякий раз, когда состояние задачи изменяется на FAILED.
final ObjectProperty<EventHandler<WorkerStateEvent>> onRunningProperty()
Обработчик события onRunning вызывается всякий раз, когда состояние задачи изменяется на RUNNING.
final ObjectProperty<EventHandler<WorkerStateEvent>> onScheduledProperty()
Обработчик события onSchedule вызывается всякий раз, когда состояние задачи изменяется на SCHEDULED.
final ObjectProperty<EventHandler<WorkerStateEvent>> onSucceededProperty()
Обработчик события onSucceeded вызывается всякий раз, когда состояние задачи изменяется на SUCCEEDED.
final ReadOnlyDoubleProperty progressProperty()
Возвращает ReadOnlyDoubleProperty, представляющий прогресс.
final <T extends Event>
void
removeEventFilter(EventType<T> eventType, EventHandler<? super T> eventFilter)
Отменяет ранее зарегистрированный фильтр событий для данного целевого объекта.
final <T extends Event>
void
removeEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler)
Отменяет ранее зарегистрированный обработчик событий для данного целевого объекта.
protected void running()
Защищённый вспомогательный метод для подклассов, вызываемый всякий раз, когда состояние задачи изменяется на RUNNING.
final ReadOnlyBooleanProperty runningProperty()
Возвращает ReadOnlyBooleanProperty, представляющий, работает ли рабочий поток.
protected void scheduled()
Защищённый вспомогательный метод для подклассов, вызываемый всякий раз, когда состояние задачи изменяется на SCHEDULED.
protected final <T extends Event>
void
setEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler)
Устанавливает обработчик для данного типа события.
final void setOnCancelled(EventHandler<WorkerStateEvent> value)
Обработчик события onCancelled вызывается всякий раз, когда состояние задачи изменяется на CANCELLED.
final void setOnFailed(EventHandler<WorkerStateEvent> value)
Обработчик события onFailed вызывается всякий раз, когда состояние задачи изменяется на FAILED.
final void setOnRunning(EventHandler<WorkerStateEvent> value)
Обработчик события onRunning вызывается всякий раз, когда состояние задачи изменяется на RUNNING.
final void setOnScheduled(EventHandler<WorkerStateEvent> value)
Обработчик события onSchedule вызывается всякий раз, когда состояние задачи изменяется на SCHEDULED.
final void setOnSucceeded(EventHandler<WorkerStateEvent> value)
Обработчик события onSucceeded вызывается всякий раз, когда состояние задачи изменяется на SUCCEEDED.
final ReadOnlyObjectProperty<Worker.State> stateProperty()
Возвращает ReadOnlyObjectProperty, представляющий текущее состояние.
protected void succeeded()
Защищённый вспомогательный метод для подклассов, вызываемый всякий раз, когда состояние задачи изменяется на SUCCEEDED.
final ReadOnlyStringProperty titleProperty()
Возвращает ReadOnlyStringProperty, представляющий заголовок.
final ReadOnlyDoubleProperty totalWorkProperty()
Возвращает ReadOnlyDoubleProperty, представляющий максимальное количество работы, которое нужно выполнить.
protected void updateMessage(String message)
Обновляет свойство message.
protected void updateProgress(double workDone, double max)
Обновляет свойства workDone, totalWork и progress.
protected void updateProgress(long workDone, long max)
Обновляет свойства workDone, totalWork и progress.
protected void updateTitle(String title)
Обновляет свойство title.
protected void updateValue(V value)
Обновляет свойство value.
final ReadOnlyObjectProperty<V> valueProperty()
Возвращает ReadOnlyObjectProperty, представляющий значение.
final ReadOnlyDoubleProperty workDoneProperty()
Возвращает ReadOnlyDoubleProperty, представляющий текущий прогресс.

Методы, объявленные в классе java.util.concurrent.FutureTask

cancel, done, exceptionNow, get, get, isCancelled, isDone, resultNow, run, runAndReset, set, setException, state, toString

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Подробности свойств

state

public final ReadOnlyObjectProperty<Worker.State> stateProperty
Указано в:
stateProperty в интерфейсе Worker<V>
Возвращает:
Свойство, представляющее состояние
См. также:
  • getState()
  • stateProperty()

onScheduled

public final ObjectProperty<EventHandler<WorkerStateEvent>> onScheduledProperty
Обработчик события onSchedule вызывается всякий раз, когда состояние задачи переходит в состояние SCHEDULED.
С:
JavaFX 2.1
См. также:
  • getOnScheduled()
  • setOnScheduled(EventHandler)
  • onScheduledProperty()

onRunning

public final ObjectProperty<EventHandler<WorkerStateEvent>> onRunningProperty
Обработчик события onRunning вызывается всякий раз, когда состояние задачи переходит в состояние RUNNING.
С:
JavaFX 2.1
См. также:
  • getOnRunning()
  • setOnRunning(EventHandler)
  • onRunningProperty()

onSucceeded

public final ObjectProperty<EventHandler<WorkerStateEvent>> onSucceededProperty
Обработчик события onSucceeded вызывается всякий раз, когда состояние задачи переходит в состояние SUCCEEDED.
С:
JavaFX 2.1
См. также:
  • getOnSucceeded()
  • setOnSucceeded(EventHandler)
  • onSucceededProperty()

onCancelled

public final ObjectProperty<EventHandler<WorkerStateEvent>> onCancelledProperty
Обработчик события onCancelled вызывается всякий раз, когда состояние задачи переходит в состояние CANCELLED.
С:
JavaFX 2.1
См. также:
  • getOnCancelled()
  • setOnCancelled(EventHandler)
  • onCancelledProperty()

onFailed

public final ObjectProperty<EventHandler<WorkerStateEvent>> onFailedProperty
Обработчик события onFailed вызывается всякий раз, когда состояние задачи переходит в состояние FAILED.
С:
JavaFX 2.1
См. также:
  • getOnFailed()
  • setOnFailed(EventHandler)
  • onFailedProperty()

value

public final ReadOnlyObjectProperty<V> valueProperty
Указано в:
valueProperty в интерфейсе Worker<V>
Возвращает:
Свойство, представляющее текущее значение
См. также:
  • getValue()
  • valueProperty()

exception

public final ReadOnlyObjectProperty<Throwable> exceptionProperty
Указано в:
exceptionProperty в интерфейсе Worker<V>
Возвращает:
свойство, представляющее исключение
См. также:
  • getException()
  • exceptionProperty()

workDone

public final ReadOnlyDoubleProperty workDoneProperty
Указано в:
workDoneProperty в интерфейсе Worker<V>
Возвращает:
Свойство, представляющее количество выполненной работы
См. также:
  • getWorkDone()
  • workDoneProperty()

totalWork

public final ReadOnlyDoubleProperty totalWorkProperty
Указано в:
totalWorkProperty в интерфейсе Worker<V>
Возвращает:
свойство, представляющее общий объем работы
См. также:
  • getTotalWork()
  • totalWorkProperty()

progress

public final ReadOnlyDoubleProperty progressProperty
Указано в:
progressProperty в интерфейсе Worker<V>
Возвращает:
свойство, представляющее прогресс
См. также:
  • getProgress()
  • progressProperty()

running

public final ReadOnlyBooleanProperty runningProperty
Указано в:
runningProperty в интерфейсе Worker<V>
Возвращает:
свойство, указывающее, работает ли рабочий
См. также:
  • isRunning()
  • runningProperty()

message

public final ReadOnlyStringProperty messageProperty
Указано в:
messageProperty в интерфейсе Worker<V>
Возвращает:
свойство, представляющее текущее сообщение
См. также:
  • getMessage()
  • messageProperty()

title

public final ReadOnlyStringProperty titleProperty
Указано в:
titleProperty в интерфейсе Worker<V>
Возвращает:
свойство, представляющее текущий заголовок
См. также:
  • getTitle()
  • titleProperty()

Подробности конструкторов

Task

public Task()
Создает новую задачу.

Подробности методов

call

protected abstract V call() throws Exception
Вызывается при выполнении задачи, метод call должен быть переопределен и реализован подклассами. Метод call фактически выполняет логику фонового потока. Из кода внутри этого метода можно вызывать только методы updateProgress, updateMessage, updateValue и updateTitle класса Task. Любые другие взаимодействия с задачей из фонового потока приведут к исключениям во время выполнения.
Возвращает:
Результат фоновой работы, если таковой имеется.
Исключения:
Exception - необработанное исключение, произошедшее во время фоновой операции

getState

public final Worker.State getState()
Получает значение свойства state.
Указано в:
getState в интерфейсе Worker<V>
Описание свойства:
Возвращает:
значение свойства state
См. также:
  • stateProperty()

stateProperty

public final ReadOnlyObjectProperty<Worker.State> stateProperty()
Описание скопировано из интерфейса: Worker
Получает ReadOnlyObjectProperty, представляющее текущее состояние.
Указано в:
stateProperty в интерфейсе Worker<V>
Возвращает:
свойство state
См. также:
  • getState()

onScheduledProperty

public final ObjectProperty<EventHandler<WorkerStateEvent>> onScheduledProperty()
Обработчик события onSchedule вызывается всякий раз, когда состояние задачи переходит в состояние SCHEDULED.
Возвращает:
свойство обработчика событий onScheduled
С:
JavaFX 2.1
См. также:
  • getOnScheduled()
  • setOnScheduled(EventHandler)

getOnScheduled

public final EventHandler<WorkerStateEvent> getOnScheduled()
Обработчик события onSchedule вызывается всякий раз, когда состояние задачи переходит в состояние SCHEDULED.
Возвращает:
обработчик событий onScheduled, если таковой имеется
С:
JavaFX 2.1

setOnScheduled

public final void setOnScheduled(EventHandler<WorkerStateEvent> value)
Обработчик события onSchedule вызывается всякий раз, когда состояние задачи переходит в состояние SCHEDULED.
Параметры:
value - обработчик событий, может быть null для его очистки
С:
JavaFX 2.1

планировано

protected void scheduled()
Защищённый вспомогательный метод для подклассов, вызываемый всякий раз, когда состояние задачи переходит в состояние ЗАДАНО. Этот метод вызывается в потоке FX-приложения после того, как задача полностью перешла в новое состояние.
Since:
JavaFX 2.1

onRunningProperty

public final ObjectProperty<EventHandler<WorkerStateEvent>> onRunningProperty()
Обработчик события onRunning вызывается всякий раз, когда состояние задачи переходит в состояние ВЫПОЛНЕНИЕ.
Returns:
свойство обработчика событий onRunning
Since:
JavaFX 2.1
See Also:
  • getOnRunning()
  • setOnRunning(EventHandler)

getOnRunning

public final EventHandler<WorkerStateEvent> getOnRunning()
Обработчик события onRunning вызывается всякий раз, когда состояние задачи переходит в состояние ВЫПОЛНЕНИЕ.
Returns:
обработчик событий onRunning, если таковой есть
Since:
JavaFX 2.1

setOnRunning

public final void setOnRunning(EventHandler<WorkerStateEvent> value)
Обработчик события onRunning вызывается всякий раз, когда состояние задачи переходит в состояние ВЫПОЛНЕНИЕ.
Parameters:
value - обработчик событий, может быть null для его очистки
Since:
JavaFX 2.1

выполняется

protected void running()
Защищённый вспомогательный метод для подклассов, вызываемый всякий раз, когда состояние задачи переходит в состояние ВЫПОЛНЕНИЕ. Этот метод вызывается в потоке FX-приложения после того, как задача полностью перешла в новое состояние.
Since:
JavaFX 2.1

onSucceededProperty

public final ObjectProperty<EventHandler<WorkerStateEvent>> onSucceededProperty()
Обработчик события onSucceeded вызывается всякий раз, когда состояние задачи переходит в состояние УСПЕШНО.
Returns:
свойство обработчика событий onSucceeded
Since:
JavaFX 2.1
See Also:
  • getOnSucceeded()
  • setOnSucceeded(EventHandler)

getOnSucceeded

public final EventHandler<WorkerStateEvent> getOnSucceeded()
Обработчик события onSucceeded вызывается всякий раз, когда состояние задачи переходит в состояние УСПЕШНО.
Returns:
обработчик событий onSucceeded, если таковой есть
Since:
JavaFX 2.1

setOnSucceeded

public final void setOnSucceeded(EventHandler<WorkerStateEvent> value)
Обработчик события onSucceeded вызывается всякий раз, когда состояние задачи переходит в состояние УСПЕШНО.
Parameters:
value - обработчик событий, может быть null для его очистки
Since:
JavaFX 2.1

успешно

protected void succeeded()
Защищённый вспомогательный метод для подклассов, вызываемый всякий раз, когда состояние задачи переходит в состояние УСПЕШНО. Этот метод вызывается в потоке FX-приложения после того, как задача полностью перешла в новое состояние.
Since:
JavaFX 2.1

onCancelledProperty

public final ObjectProperty<EventHandler<WorkerStateEvent>> onCancelledProperty()
Обработчик события onCancelled вызывается всякий раз, когда состояние задачи переходит в состояние ОТМЕНЕНО.
Returns:
свойство обработчика событий onCancelled
Since:
JavaFX 2.1
See Also:
  • getOnCancelled()
  • setOnCancelled(EventHandler)

getOnCancelled

public final EventHandler<WorkerStateEvent> getOnCancelled()
Обработчик события onCancelled вызывается всякий раз, когда состояние задачи переходит в состояние ОТМЕНЕНО.
Returns:
обработчик событий onCancelled, если таковой есть
Since:
JavaFX 2.1

setOnCancelled

public final void setOnCancelled(EventHandler<WorkerStateEvent> value)
Обработчик события onCancelled вызывается всякий раз, когда состояние задачи переходит в состояние ОТМЕНЕНО.
Parameters:
value - обработчик событий, может быть null для его очистки
Since:
JavaFX 2.1

отменено

protected void cancelled()
Защищённый вспомогательный метод для подклассов, вызываемый всякий раз, когда состояние задачи переходит в состояние ОТМЕНЕНО. Этот метод вызывается в потоке FX-приложения после того, как задача полностью перешла в новое состояние.
Since:
JavaFX 2.1

onFailedProperty

public final ObjectProperty<EventHandler<WorkerStateEvent>> onFailedProperty()
Обработчик события onFailed вызывается всякий раз, когда состояние задачи переходит в состояние ОШИБКА.
Returns:
свойство обработчика событий onFailed
Since:
JavaFX 2.1
See Also:
  • getOnFailed()
  • setOnFailed(EventHandler)

getOnFailed

public final EventHandler<WorkerStateEvent> getOnFailed()
Обработчик события onFailed вызывается всякий раз, когда состояние задачи переходит в состояние ОШИБКА.
Returns:
обработчик событий onFailed, если таковой есть
Since:
JavaFX 2.1

setOnFailed

public final void setOnFailed(EventHandler<WorkerStateEvent> value)
Обработчик события onFailed вызывается всякий раз, когда состояние задачи переходит в состояние ОШИБКА.
Parameters:
value - обработчик событий, может быть null для его очистки
Since:
JavaFX 2.1

ошибка

protected void failed()
Защищённый вспомогательный метод для подклассов, вызываемый всякий раз, когда состояние задачи переходит в состояние ОШИБКА. Этот метод вызывается в потоке FX-приложения после того, как задача полностью перешла в новое состояние.
Since:
JavaFX 2.1

getValue

public final V getValue()
Получает значение свойства value.
Specified by:
getValue в интерфейсе Worker<V>
Описание свойства:
Returns:
значение свойства value
See Also:
  • valueProperty()

valueProperty

public final ReadOnlyObjectProperty<V> valueProperty()
Описание скопировано из интерфейса: Worker
Получает ReadOnlyObjectProperty, представляющий значение.
Specified by:
valueProperty в интерфейсе Worker<V>
Returns:
свойство value
See Also:
  • getValue()

getException

public final Throwable getException()
Получает значение свойства exception.
Specified by:
getException в интерфейсе Worker<V>
Описание свойства:
Returns:
значение свойства exception
See Also:
  • exceptionProperty()

exceptionProperty

public final ReadOnlyObjectProperty<Throwable> exceptionProperty()
Описание скопировано из интерфейса: Worker
Получает ReadOnlyObjectProperty, представляющий любые возникшие исключения.
Specified by:
exceptionProperty в интерфейсе Worker<V>
Returns:
свойство exception
See Also:
  • getException()

getWorkDone

public final double getWorkDone()
Получает значение свойства workDone.
Specified by:
getWorkDone в интерфейсе Worker<V>
Описание свойства:
Returns:
значение свойства workDone
See Also:
  • workDoneProperty()

workDoneProperty

public final ReadOnlyDoubleProperty workDoneProperty()
Описание скопировано из интерфейса: Worker
Получает ReadOnlyDoubleProperty, представляющий текущий прогресс.
Указано в:
workDoneProperty в интерфейсе Worker<V>
Возвращает:
свойство workDone
См. также:
  • getWorkDone()

getTotalWork

public final double getTotalWork()
Получает значение свойства totalWork.
Указано в:
getTotalWork в интерфейсе Worker<V>
Описание свойства:
Возвращает:
значение свойства totalWork
См. также:
  • totalWorkProperty()

totalWorkProperty

public final ReadOnlyDoubleProperty totalWorkProperty()
Описание скопировано из интерфейса: Worker
Получает ReadOnlyDoubleProperty, представляющий максимальное количество работы, которое необходимо выполнить. Эти «единицы работы» имеют значение для реализации Worker, например, количество байтов, которые необходимо загрузить, или количество изображений для обработки, или какой-либо другой показатель.
Указано в:
totalWorkProperty в интерфейсе Worker<V>
Возвращает:
свойство totalWork
См. также:
  • getTotalWork()

getProgress

public final double getProgress()
Получает значение свойства progress.
Указано в:
getProgress в интерфейсе Worker<V>
Описание свойства:
Возвращает:
значение свойства progress
См. также:
  • progressProperty()

progressProperty

public final ReadOnlyDoubleProperty progressProperty()
Описание скопировано из интерфейса: Worker
Получает ReadOnlyDoubleProperty, представляющий прогресс.
Указано в:
progressProperty в интерфейсе Worker<V>
Возвращает:
свойство progress
См. также:
  • getProgress()

isRunning

public final boolean isRunning()
Получает значение свойства running.
Указано в:
isRunning в интерфейсе Worker<V>
Описание свойства:
Возвращает:
значение свойства running
См. также:
  • runningProperty()

runningProperty

public final ReadOnlyBooleanProperty runningProperty()
Описание скопировано из интерфейса: Worker
Получает ReadOnlyBooleanProperty, представляющий, запущена ли работа Worker.
Указано в:
runningProperty в интерфейсе Worker<V>
Возвращает:
свойство running
См. также:
  • isRunning()

getMessage

public final String getMessage()
Получает значение свойства message.
Указано в:
getMessage в интерфейсе Worker<V>
Описание свойства:
Возвращает:
значение свойства message
См. также:
  • messageProperty()

messageProperty

public final ReadOnlyStringProperty messageProperty()
Описание скопировано из интерфейса: Worker
Получает ReadOnlyStringProperty, представляющий сообщение.
Указано в:
messageProperty в интерфейсе Worker<V>
Возвращает:
свойство message
См. также:
  • getMessage()

getTitle

public final String getTitle()
Получает значение свойства title.
Указано в:
getTitle в интерфейсе Worker<V>
Описание свойства:
Возвращает:
значение свойства title
См. также:
  • titleProperty()

titleProperty

public final ReadOnlyStringProperty titleProperty()
Описание скопировано из интерфейса: Worker
Получает ReadOnlyStringProperty, представляющий заголовок.
Указано в:
titleProperty в интерфейсе Worker<V>
Возвращает:
свойство title
См. также:
  • getTitle()

cancel

public final boolean cancel()
Описание скопировано из интерфейса: Worker
Прерывает выполнение этого Worker. Вызов этого метода либо удалит этот Worker из очереди выполнения, либо остановит выполнение.
Указано в:
cancel в интерфейсе Worker<V>
Возвращает:
возвращает true, если отмена была успешной

updateProgress

protected void updateProgress(long workDone, long max)
Обновляет свойства workDone, totalWork и progress. Вызовы updateProgress объединяются и выполняются позже в потоке FX-приложения, и вызовы updateProgress, даже из потока FX-приложения, не обязательно приведут к немедленным обновлениям этих свойств, а промежуточные значения workDone могут объединяться для экономии событий уведомлений. max становится новым значением для totalWork.

Этот метод безопасно вызывать из любого потока.

Параметры:
workDone - Значение от Long.MIN_VALUE до максимума. Если значение больше максимума, оно будет ограничено максимумом. Если переданное значение отрицательно, то полученный процент выполнения будет -1 (то есть неопределённый).
max - Значение от Long.MIN_VALUE до Long.MAX_VALUE.
См. также:
  • updateProgress(double, double)

updateProgress

protected void updateProgress(double workDone, double max)
Обновляет свойства workDone, totalWork и progress. Вызовы updateProgress объединяются и выполняются позже в потоке FX-приложения, и вызовы updateProgress, даже из потока FX-приложения, не обязательно приведут к немедленным обновлениям этих свойств, а промежуточные значения workDone могут объединяться для экономии событий уведомлений. max становится новым значением для totalWork.

Этот метод безопасно вызывать из любого потока.

Параметры:
workDone - Значение от Double.MIN_VALUE до максимума. Если значение больше максимума, оно будет ограничено максимумом. Если переданное значение отрицательное, или бесконечность, или NaN, то результат percentDone будет -1 (то есть неопределённый).
max - Значение от Double.MIN_VALUE до Double.MAX_VALUE. Бесконечность и NaN обрабатываются как -1.
С тех пор:
JavaFX 2.2

updateMessage

protected void updateMessage(String message)
Обновляет свойство message. Вызовы updateMessage объединяются и выполняются позже в потоке FX-приложения, поэтому вызовы updateMessage, даже из потока FX-приложения, могут не привести к немедленному обновлению этого свойства, и промежуточные значения сообщения могут объединяться для экономии событий уведомлений.

Этот метод безопасно вызывать из любого потока.

Параметры:
message - новое сообщение

updateTitle

protected void updateTitle(String title)
Обновляет свойство title. Вызовы updateTitle объединяются и выполняются позже в потоке FX-приложения, поэтому вызовы updateTitle, даже из потока FX-приложения, могут не привести к немедленному обновлению этого свойства, и промежуточные значения заголовка могут объединяться для экономии событий уведомлений.

Этот метод безопасно вызывать из любого потока.

Параметры:
title - новый заголовок

updateValue

protected void updateValue(V value)
Обновляет свойство value. Вызовы updateValue объединяются и выполняются позже в потоке приложения FX, поэтому вызовы updateValue, даже из потока приложения FX, могут не обязательно привести к немедленным обновлениям этого свойства, и промежуточные значения могут быть объединены для экономии событий уведомлений.

Этот метод безопасно вызывать из любого потока.

Parameters:
value - новое значение
Since:
JavaFX 8.0

addEventHandler

public final <T extends Event> void addEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler)
Регистрирует обработчик событий для этой цели.

Обработчик вызывается, когда целевой объект получает Event указанного типа во время фазы всплытия доставки событий.

Specified by:
addEventHandler в интерфейсе EventTarget
Type Parameters:
T - класс события обработчика
Parameters:
eventType - тип событий, получаемых обработчиком
eventHandler - обработчик событий
Since:
JavaFX 2.1

removeEventHandler

public final <T extends Event> void removeEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler)
Отменяет регистрацию ранее зарегистрированного обработчика событий от этой цели.

Поскольку можно зарегистрировать один экземпляр EventHandler для разных типов событий, вызывающему объекту необходимо указать тип события, из которого должен быть исключен обработчик.

Specified by:
removeEventHandler в интерфейсе EventTarget
Type Parameters:
T - класс события обработчика
Parameters:
eventType - тип события, из которого нужно исключить
eventHandler - обработчик событий
Since:
JavaFX 2.1

addEventFilter

public final <T extends Event> void addEventFilter(EventType<T> eventType, EventHandler<? super T> eventFilter)
Регистрирует фильтр событий для данной цели.

Фильтр вызывается, когда целевой объект получает Event указанного типа во время фазы захвата доставки событий.

Specified by:
addEventFilter в интерфейсе EventTarget
Type Parameters:
T - класс события фильтра
Parameters:
eventType - тип событий, получаемых фильтром
eventFilter - фильтр событий
Since:
JavaFX 2.1

removeEventFilter

public final <T extends Event> void removeEventFilter(EventType<T> eventType, EventHandler<? super T> eventFilter)
Удаляет ранее зарегистрированный фильтр событий от этой цели.

Поскольку можно зарегистрировать один экземпляр EventHandler для разных типов событий, вызывающему объекту необходимо указать тип события, из которого должен быть исключен фильтр.

Specified by:
removeEventFilter в интерфейсе EventTarget
Type Parameters:
T - класс события фильтра
Parameters:
eventType - тип события, из которого нужно исключить
eventFilter - фильтр событий
Since:
JavaFX 2.1

setEventHandler

protected final <T extends Event> void setEventHandler(EventType<T> eventType, EventHandler<? super T> eventHandler)
Устанавливает обработчик для использования для этого типа события. Одновременно можно указать только один такой обработчик. Этот обработчик гарантированно вызывается первым. Используется для регистрации пользовательских обработчиков событий onFoo.
Type Parameters:
T - конкретный класс события обработчика
Parameters:
eventType - тип события, ассоциируемого с данным eventHandler
eventHandler - обработчик для регистрации или null для отмены регистрации
Throws:
NullPointerException - если тип события null
Since:
JavaFX 2.1

fireEvent

public final void fireEvent(Event event)
Вызывает указанное событие. Любой встреченный фильтр событий будет уведомлен и может потреблять событие. Если он не потребляется фильтрами, обработчики событий этой задачи уведомляются. Если и они не потребляют событие, вызываются все обработчики событий и могут потреблять событие.

Этот метод должен вызываться в потоке FX пользователя.

Parameters:
event - событие для вызова
Since:
JavaFX 2.1

buildEventDispatchChain

public EventDispatchChain buildEventDispatchChain(EventDispatchChain tail)
Описание скопировано из интерфейса: EventTarget
Создаёт цепочку обработки событий для этой цели. Цепочка обработки событий содержит диспетчеры событий, которые могут быть заинтересованы в обработке событий, нацеленных на этот EventTarget. Эта целевая точка события не добавляется автоматически в цепочку, поэтому, если она хочет обрабатывать события, она должна добавить EventDispatcher для себя в цепочку.

В случае, если целевая точка события является частью какой-либо иерархии, цепочка для нее обычно строится из диспетчеров событий, собранных с корня иерархии до целевой точки события.

Цепочка обработки событий строится путём модификации предоставленной исходной цепочки обработки событий. Возвращаемая цепочка должна содержать исходную цепочку в конце, поэтому диспетчеры должны быть добавлены в начало исходной цепочки.

Вызывающий объект не должен предполагать, что исходная цепочка останется неизменной или что возвращаемое значение будет ссылаться на другую цепочку.

Specified by:
buildEventDispatchChain в интерфейсе EventTarget
Parameters:
tail - исходная цепочка для построения
Returns:
результирующая цепочка обработки событий для этой цели

Отправить отчет об ошибке или предложить улучшение
Авторские права © 2008, 2025, Oracle и/или его филиалы. Все права защищены.

© 2008, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from JavaFX API Documentation.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Java, JavaFX and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API