Spec-Zone.ru › OpenJavaFX 8
javafx.concurrent

Класс 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. Задачи предоставляют дополнительное состояние и наблюдаемые свойства, полезные для программирования асинхронных задач в 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.

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

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

В Java нет надежного способа "убить" поток в процессе. Однако когда cancel вызывается на задаче, важно, чтобы задача прекратила обработку. "Бегущая" задача может продолжать обработку и обновление свойств сообщения, текста и прогресса даже после отмены задачи! В Java отмена задачи — это совместное усилие. Пользователь задачи запросит её отмену, и автор задачи должен проверить, была ли она отменена внутри тела метода call. Это можно сделать двумя способами. Во-первых, автор задачи может проверить метод isCancelled, унаследованный от FutureTask, чтобы увидеть, была ли отменена задача. Во-вторых, если реализация задачи использует какие-либо блокирующие вызовы (например, NIO InterruptibleChannels или 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;
         }
     };

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

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

Этот пример добавляет к предыдущим примерам блокирующий вызов. Поскольку блокирующий вызов может вызвать исключение 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.setF 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 и другие элементы управления UI и узлы графа сцены используют 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> partialResults =
                 new ReadOnlyObjectWrapper<>(this, "partialResults",
                         FXCollections.observableArrayList(new ArrayList()));

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

         @Override protected ObservableList 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!");
         }
     };

С момента:

JavaFX 2.0

  • Сводка свойств

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

    • Вложенные классы/интерфейсы, унаследованные от интерфейса javafx.concurrent.Worker

      Worker.State
  • Сводка конструкторов

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

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

      done, get, get, isCancelled, isDone, run, runAndReset, set, setException
    • Методы, унаследованные от класса java.lang.Object

      clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Подробное описание свойства

    • состояние

      public final ReadOnlyObjectProperty<Worker.State> stateProperty

      Определено:

      stateProperty в интерфейсе Worker<V>

      Возвращает:

      Свойство, представляющее состояние

      См. также:

      getState()

    • onScheduled

      public final ObjectProperty<EventHandler<WorkerStateEvent>> onScheduledProperty
      Обработчик события onSchedule вызывается всякий раз, когда состояние задачи переходит в состояние SCHEDULED.

      С:

      JavaFX 2.1

      См. также:

      getOnScheduled(), setOnScheduled(EventHandler)

    • onRunning

      public final ObjectProperty<EventHandler<WorkerStateEvent>> onRunningProperty
      Обработчик события onRunning вызывается всякий раз, когда состояние задачи переходит в состояние RUNNING.

      С:

      JavaFX 2.1

      См. также:

      getOnRunning(), setOnRunning(EventHandler)

    • onSucceeded

      public final ObjectProperty<EventHandler<WorkerStateEvent>> onSucceededProperty
      Обработчик события onSucceeded вызывается всякий раз, когда состояние задачи переходит в состояние SUCCEEDED.

      С:

      JavaFX 2.1

      См. также:

      getOnSucceeded(), setOnSucceeded(EventHandler)

    • onCancelled

      public final ObjectProperty<EventHandler<WorkerStateEvent>> onCancelledProperty
      Обработчик события onCancelled вызывается всякий раз, когда состояние задачи переходит в состояние CANCELLED.

      С:

      JavaFX 2.1

      См. также:

      getOnCancelled(), setOnCancelled(EventHandler)

    • onFailed

      public final ObjectProperty<EventHandler<WorkerStateEvent>> onFailedProperty
      Обработчик события onFailed вызывается всякий раз, когда состояние задачи переходит в состояние FAILED.

      С:

      JavaFX 2.1

      См. также:

      getOnFailed(), setOnFailed(EventHandler)

    • значение

      public final ReadOnlyObjectProperty<V> valueProperty

      Определено:

      valueProperty в интерфейсе Worker<V>

      Возвращает:

      Свойство, представляющее текущее значение

      См. также:

      getValue()

    • исключение

      public final ReadOnlyObjectProperty<Throwable> exceptionProperty

      Определено:

      exceptionProperty в интерфейсе Worker<V>

      Возвращает:

      свойство, представляющее исключение

      См. также:

      getException()

    • выполненная работа

      public final ReadOnlyDoubleProperty workDoneProperty

      Определено:

      workDoneProperty в интерфейсе Worker<V>

      Возвращает:

      Свойство, представляющее объем выполненной работы

      См. также:

      getWorkDone()

    • общее количество работы

      public final ReadOnlyDoubleProperty totalWorkProperty

      Определено:

      totalWorkProperty в интерфейсе Worker<V>

      Возвращает:

      свойство, представляющее общее количество работы

      См. также:

      getTotalWork()

    • прогресс

      public final ReadOnlyDoubleProperty progressProperty

      Определено:

      progressProperty в интерфейсе Worker<V>

      Возвращает:

      свойство, представляющее прогресс

      См. также:

      getProgress()

    • работает

      public final ReadOnlyBooleanProperty runningProperty

      Определено:

      runningProperty в интерфейсе Worker<V>

      Возвращает:

      свойство, представляющее, работает ли рабочий процесс

      См. также:

      isRunning()

    • сообщение

      public final ReadOnlyStringProperty messageProperty

      Определено:

      messageProperty в интерфейсе Worker<V>

      Возвращает:

      свойство, представляющее текущее сообщение

      См. также:

      getMessage()

    • заголовок

      public final ReadOnlyStringProperty titleProperty

      Определено:

      titleProperty в интерфейсе Worker<V>

      Возвращает:

      свойство, представляющее текущий заголовок

      См. также:

      getTitle()

  • Подробное описание конструктора

    • Задача

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

    • call

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

      Возвращает:

      Результат фоновой работы, если таковой имеется.

      Выбрасывает:

      Exception - необработанное исключение, которое произошло во время фоновой операции

    • getState

      public final Worker.State getState()
      Получает значение свойства state.

      Определено в:

      getState в интерфейсе Worker<V>

      Возвращает:

      Текущее состояние этого Worker

    • stateProperty

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

      Определено в:

      stateProperty в интерфейсе Worker<V>

      Возвращает:

      Свойство, представляющее состояние

      См. также:

      getState()

    • onScheduledProperty

      public final ObjectProperty<EventHandler<WorkerStateEvent>> onScheduledProperty()
      Обработчик события onSchedule вызывается всякий раз, когда состояние Task переходит в состояние SCHEDULED.

      Начиная с:

      JavaFX 2.1

      См. также:

      getOnScheduled(), setOnScheduled(EventHandler)

    • getOnScheduled

      public final EventHandler<WorkerStateEvent> getOnScheduled()
      Обработчик события onSchedule вызывается всякий раз, когда состояние Task переходит в состояние SCHEDULED.

      Возвращает:

      Обработчик событий onScheduled, если он существует

      Начиная с:

      JavaFX 2.1

    • setOnScheduled

      public final void setOnScheduled(EventHandler<WorkerStateEvent> value)
      Обработчик события onSchedule вызывается всякий раз, когда состояние Task переходит в состояние SCHEDULED.

      Параметры:

      value - обработчик событий, может быть равен null, чтобы очистить его

      Начиная с:

      JavaFX 2.1

    • scheduled

      protected void scheduled()
      Удобный защищенный метод для подклассов, вызываемый всякий раз, когда состояние Task перешло в состояние SCHEDULED. Этот метод вызывается в потоке приложения FX после того, как Task полностью перешел в новое состояние.

      Начиная с:

      JavaFX 2.1

    • onRunningProperty

      public final ObjectProperty<EventHandler<WorkerStateEvent>> onRunningProperty()
      Обработчик события onRunning вызывается всякий раз, когда состояние Task переходит в состояние RUNNING.

      Начиная с:

      JavaFX 2.1

      См. также:

      getOnRunning(), setOnRunning(EventHandler)

    • getOnRunning

      public final EventHandler<WorkerStateEvent> getOnRunning()
      Обработчик события onRunning вызывается всякий раз, когда состояние Task переходит в состояние RUNNING.

      Возвращает:

      Обработчик событий onRunning, если он существует

      Начиная с:

      JavaFX 2.1

    • setOnRunning

      public final void setOnRunning(EventHandler<WorkerStateEvent> value)
      Обработчик события onRunning вызывается всякий раз, когда состояние Task переходит в состояние RUNNING.

      Параметры:

      value - обработчик событий, может быть равен null, чтобы очистить его

      Начиная с:

      JavaFX 2.1

    • running

      protected void running()
      Удобный защищенный метод для подклассов, вызываемый всякий раз, когда состояние Task перешло в состояние RUNNING. Этот метод вызывается в потоке приложения FX после того, как Task полностью перешел в новое состояние.

      Начиная с:

      JavaFX 2.1

    • onSucceededProperty

      public final ObjectProperty<EventHandler<WorkerStateEvent>> onSucceededProperty()
      Обработчик события onSucceeded вызывается всякий раз, когда состояние Task переходит в состояние SUCCEEDED.

      Начиная с:

      JavaFX 2.1

      См. также:

      getOnSucceeded(), setOnSucceeded(EventHandler)

    • getOnSucceeded

      public final EventHandler<WorkerStateEvent> getOnSucceeded()
      Обработчик события onSucceeded вызывается всякий раз, когда состояние Task переходит в состояние SUCCEEDED.

      Возвращает:

      Обработчик событий onSucceeded, если он существует

      Начиная с:

      JavaFX 2.1

    • setOnSucceeded

      public final void setOnSucceeded(EventHandler<WorkerStateEvent> value)
      Обработчик события onSucceeded вызывается всякий раз, когда состояние Task переходит в состояние SUCCEEDED.

      Параметры:

      value - обработчик событий, может быть равен null, чтобы очистить его

      Начиная с:

      JavaFX 2.1

    • succeeded

      protected void succeeded()
      Удобный защищенный метод для подклассов, вызываемый всякий раз, когда состояние Task перешло в состояние SUCCEEDED. Этот метод вызывается в потоке приложения FX после того, как Task полностью перешел в новое состояние.

      Начиная с:

      JavaFX 2.1

    • onCancelledProperty

      public final ObjectProperty<EventHandler<WorkerStateEvent>> onCancelledProperty()
      Обработчик события onCancelled вызывается всякий раз, когда состояние Task переходит в состояние CANCELLED.

      Начиная с:

      JavaFX 2.1

      См. также:

      getOnCancelled(), setOnCancelled(EventHandler)

    • getOnCancelled

      public final EventHandler<WorkerStateEvent> getOnCancelled()
      Обработчик события onCancelled вызывается всякий раз, когда состояние Task переходит в состояние CANCELLED.

      Возвращает:

      Обработчик событий onCancelled, если он существует

      Начиная с:

      JavaFX 2.1

    • setOnCancelled

      public final void setOnCancelled(EventHandler<WorkerStateEvent> value)
      Обработчик события onCancelled вызывается всякий раз, когда состояние Task переходит в состояние CANCELLED.

      Параметры:

      value - обработчик событий, может быть равен null, чтобы очистить его

      Начиная с:

      JavaFX 2.1

    • cancelled

      protected void cancelled()
      Удобный защищенный метод для подклассов, вызываемый всякий раз, когда состояние Task перешло в состояние CANCELLED. Этот метод вызывается в потоке приложения FX после того, как Task полностью перешел в новое состояние.

      Начиная с:

      JavaFX 2.1

    • onFailedProperty

      public final ObjectProperty<EventHandler<WorkerStateEvent>> onFailedProperty()
      Обработчик события onFailed вызывается всякий раз, когда состояние Task переходит в состояние FAILED.

      Начиная с:

      JavaFX 2.1

      См. также:

      getOnFailed(), setOnFailed(EventHandler)

    • getOnFailed

      public final EventHandler<WorkerStateEvent> getOnFailed()
      Обработчик события onFailed вызывается всякий раз, когда состояние Task переходит в состояние FAILED.

      Возвращает:

      Обработчик событий onFailed, если он существует

      Начиная с:

      JavaFX 2.1

    • setOnFailed

      public final void setOnFailed(EventHandler<WorkerStateEvent> value)
      Обработчик события onFailed вызывается всякий раз, когда состояние Task переходит в состояние FAILED.

      Параметры:

      value - обработчик событий, может быть равен null, чтобы очистить его

      Начиная с:

      JavaFX 2.1

    • failed

      protected void failed()
      Удобный защищенный метод для подклассов, вызываемый всякий раз, когда состояние Task перешло в состояние FAILED. Этот метод вызывается в потоке приложения FX после того, как Task полностью перешел в новое состояние.

      Начиная с:

      JavaFX 2.1

    • getValue

      public final V getValue()
      Получает значение свойства value.

      Определено в:

      getValue в интерфейсе Worker<V>

      Возвращает:

      Текущее значение этого Worker

    • valueProperty

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

      Определено в:

      valueProperty в интерфейсе Worker<V>

      Возвращает:

      Свойство, представляющее текущее значение

      См. также:

      getValue()

    • getException

      public final Throwable getException()
      Получает значение свойства exception.

      Определено в:

      getException в интерфейсе Worker<V>

      Возвращает:

      Исключение, если оно произошло

    • exceptionProperty

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

      Определено в:

      exceptionProperty в интерфейсе Worker<V>

      Возвращает:

      Свойство, представляющее исключение

      См. также:

      getException()

    • getWorkDone

      public final double getWorkDone()
      Получает значение свойства workDone.

      Определено в:

      getWorkDone в интерфейсе Worker<V>

      Возвращает:

      Объем выполненной работы

      См. также:

      Worker.totalWorkProperty(), Worker.progressProperty()

    • workDoneProperty

      public final ReadOnlyDoubleProperty workDoneProperty()
      Описание скопировано из интерфейса: Worker
      Получает ReadOnlyDoubleProperty, представляющий текущую степень выполнения.

      Определено в:

      workDoneProperty в интерфейсе Worker<V>

      Возвращает:

      Свойство, представляющее объем выполненной работы

      См. также:

      getWorkDone()

    • getTotalWork

      public final double getTotalWork()
      Получает значение свойства totalWork.

      Определено в:

      getTotalWork в интерфейсе Worker<V>

      Возвращает:

      общий объем работы

      См. также:

      Worker.workDoneProperty(), Worker.progressProperty()

    • totalWorkProperty

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

      Определено в:

      totalWorkProperty в интерфейсе Worker<V>

      Возвращает:

      свойство, представляющее общий объем работы

      См. также:

      getTotalWork()

    • getProgress

      public final double getProgress()
      Получает значение свойства progress.

      Определено в:

      getProgress в интерфейсе Worker<V>

      Возвращает:

      текущую степень выполнения

      См. также:

      Worker.workDoneProperty(), Worker.totalWorkProperty()

    • progressProperty

      public final ReadOnlyDoubleProperty progressProperty()
      Описание скопировано из интерфейса: Worker
      Получает ReadOnlyDoubleProperty, представляющий степень выполнения.

      Определено в:

      progressProperty в интерфейсе Worker<V>

      Возвращает:

      свойство, представляющее степень выполнения

      См. также:

      getProgress()

    • isRunning

      public final boolean isRunning()
      Получает значение свойства running.

      Определено в:

      isRunning в интерфейсе Worker<V>

      Возвращает:

      true, если этот Worker выполняется

    • runningProperty

      public final ReadOnlyBooleanProperty runningProperty()
      Описание скопировано из интерфейса: Worker
      Получает ReadOnlyBooleanProperty, представляющий, выполняется ли Worker.

      Определено в:

      runningProperty в интерфейсе Worker<V>

      Возвращает:

      свойство, представляющее, выполняется ли worker

      См. также:

      isRunning()

    • getMessage

      public final String getMessage()
      Получает значение свойства message.

      Определено в:

      getMessage в интерфейсе Worker<V>

      Возвращает:

      текущее сообщение

    • messageProperty

      public final ReadOnlyStringProperty messageProperty()
      Описание скопировано из интерфейса: Worker
      Получает ReadOnlyStringProperty, представляющий сообщение.

      Определено в:

      messageProperty в интерфейсе Worker<V>

      Возвращает:

      свойство, представляющее текущее сообщение

      См. также:

      getMessage()

    • getTitle

      public final String getTitle()
      Получает значение свойства title.

      Определено в:

      getTitle в интерфейсе Worker<V>

      Возвращает:

      текущее название

    • titleProperty

      public final ReadOnlyStringProperty titleProperty()
      Описание скопировано из интерфейса: Worker
      Получает ReadOnlyStringProperty, представляющий заголовок.

      Определено в:

      titleProperty в интерфейсе Worker<V>

      Возвращает:

      свойство, представляющее текущий заголовок

      См. также:

      getTitle()

    • cancel

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

      Определено в:

      cancel в интерфейсе Worker<V>

      Возвращает:

      возвращает true, если отмена прошла успешно

    • cancel

      public boolean cancel(boolean mayInterruptIfRunning)

      Определено в:

      cancel в интерфейсе Future<V>

      Переопределяет:

      cancel в классе FutureTask<V>

    • updateProgress

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

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

      Параметры:

      workDone - Значение от Long.MIN_VALUE до максимума. Если значение больше максимума, оно ограничиться максимумом. Если переданное значение отрицательно, полученный процент выполнения будет -1 (т.е. неопределенный).

      См. также:

      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 (т.е. неопределенный).

      С:

      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)
      Регистрирует обработчик событий для этой задачи. Сначала обрабатываются все фильтры событий, затем указанные обработчики событий onFoo, и, наконец, любые обработчики событий, зарегистрированные этим методом. Как и в случае с другими событиями в графической сцене, если событие потребляется, оно не будет продолжать рассылку.

      Типы параметров:

      T - конкретный класс событий для обработчика

      Параметры:

      eventType - тип событий, которые должен получать обработчик

      Исключения:

      NullPointerException - если тип события или обработчик равен null

      С:

      JavaFX 2.1

    • removeEventHandler

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

      Параметры типа:

      T - конкретный класс события обработчика

      Параметры:

      eventType - тип события, из которого нужно удалить обработчик

      Исключения:

      NullPointerException - если тип события или обработчик равны null

      С тех пор:

      JavaFX 2.1

    • addEventFilter

      public final <T extends Event> void addEventFilter(EventType<T> eventType,
                                                         EventHandler<? super T> eventFilter)
      Регистрирует фильтр событий для этой задачи. Зарегистрированные фильтры событий получают событие до любых связанных обработчиков событий.

      Параметры типа:

      T - конкретный класс события фильтра

      Параметры:

      eventType - тип событий, которые должен получить фильтр

      Исключения:

      NullPointerException - если тип события или фильтр равны null

      С тех пор:

      JavaFX 2.1

    • removeEventFilter

      public final <T extends Event> void removeEventFilter(EventType<T> eventType,
                                                            EventHandler<? super T> eventFilter)
      Отменяет регистрацию ранее зарегистрированного фильтра событий для этой задачи. Один фильтр может быть зарегистрирован для разных типов событий, поэтому вызывающий код должен указать конкретный тип события, из которого нужно удалить фильтр.

      Параметры типа:

      T - конкретный класс события фильтра

      Параметры:

      eventType - тип события, из которого нужно удалить фильтр

      Исключения:

      NullPointerException - если тип события или фильтр равны null

      С тех пор:

      JavaFX 2.1

    • setEventHandler

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

      Параметры типа:

      T - конкретный класс события обработчика

      Параметры:

      eventType - тип события, который нужно ассоциировать с заданным обработчиком событий

      Исключения:

      NullPointerException - если тип события равен null

      С тех пор:

      JavaFX 2.1

    • fireEvent

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

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

      Параметры:

      event - событие, которое нужно вызвать

      С тех пор:

      JavaFX 2.1

    • buildEventDispatchChain

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

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

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

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

      Установлено:

      buildEventDispatchChain в интерфейсе EventTarget

      Параметры:

      tail - начальная цепочка для построения

      Возвращает:

      результирующую цепочку обработки событий для этого целевого объекта

© 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