Spec-Zone.ru › OpenJavaFX 21

Класс Task<V>

java.lang.Object
java.util.concurrent.FutureTask<V>
javafx.concurrent.Task<V>
Все реализованные интерфейсы:
Runnable, Future<V>, RunnableFuture<V>, Worker<V>, EventTarget
public abstract class Task<V> extends FutureTask<V> implements Worker<V>, EventTarget

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

Задачи гибкие и чрезвычайно полезны для инкапсуляции «работы». Поскольку Service предназначен для выполнения задачи, любые задачи, определенные кодом приложения или библиотеки, могут легко использоваться с сервисом. Аналогично, поскольку Task расширяет FutureTask, очень легко и естественно использовать задачу с 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()) приведет к возникновению исключений во время выполнения. Исключение из этого правила — первоначальная настройка задачи, которую можно безопасно выполнять из любого потока. Однако после инициализации и запуска задачи она может использоваться только из потока FX (за исключением методов, явно отмеченных как подходящие для вызова подклассом из фонового потока).

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

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

Примеры

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

Простая циклическая операция

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


     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;
         }
     };
 

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

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

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

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


     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;
         }
     };
 

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

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

Этот пример дополняет предыдущие примеры блокирующим вызовом. Поскольку блокирующий вызов может сгенерировать 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 я проверю, была ли задача отменена, и если да, обновим сообщение соответствующим образом и прервём цикл.

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

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

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


     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 может безопасно его читать и ссылаться на него из фонового потока.

При написании библиотек задач (в отличие от конкретных реализаций), нам нужен другой приём. В этом случае я создам 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 может безопасно читать это состояние из фонового потока.

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

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

Тип Свойство Описание
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, представляющую текущий прогресс.

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

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

Future.State

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

Worker.State

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

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

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

Modifier and Type Method Description
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()
Вызывается при выполнении задачи; метод вызова необходимо переопределить и реализовать в подклассах.
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

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

состояние

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()

значение

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

исключение

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

проделанная работа

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

общая работа

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

прогресс

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

работает

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

сообщение

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

заголовок

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

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

Задача

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

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

вызов

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

получитьСостояние

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

scheduled

protected void scheduled()
Защищенный вспомогательный метод для подклассов, вызываемый всякий раз, когда состояние задачи переходит в состояние SCHEDULED. Этот метод вызывается в потоке FX Application после того, как задача полностью перешла в новое состояние.
С:
JavaFX 2.1
END_OF_DOCUMENT_MARKER

onRunningProperty

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

getOnRunning

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

setOnRunning

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

running

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

onSucceededProperty

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

getOnSucceeded

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

setOnSucceeded

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

succeeded

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

onCancelledProperty

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

getOnCancelled

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

setOnCancelled

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

cancelled

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

onFailedProperty

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

getOnFailed

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

setOnFailed

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

failed

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

getValue

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

valueProperty

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

getException

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

exceptionProperty

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

getWorkDone

public final double getWorkDone()
Получает значение свойства workDone.
Определено в:
getWorkDone в интерфейсе Worker<V>
Описание свойства:
Возвращает:
значение свойства workDone
См. также:
  • 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 до max. Если значение больше max, оно будет ограничено max. Если переданное значение отрицательное, результирующий процент выполнения будет -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 до max. Если значение больше max, оно будет ограничено max. Если переданное значение отрицательное, или бесконечность, или 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-приложения, могут не привести к немедленным обновлениям этого свойства, и промежуточные значения могут объединяться, чтобы сократить количество уведомлений об событиях.

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

Параметры:
value - новое значение
С:
JavaFX 8.0

addEventHandler

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

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

Определено в:
addEventHandler в интерфейсе EventTarget
Типы параметров:
T - класс события для обработчика
Параметры:
eventType - тип событий, получаемых обработчиком
eventHandler - обработчик событий
С:
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 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