Spec-Zone.ru › OpenJavaFX 11
Модуль javafx.graphics
Пакет 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. Task предоставляет дополнительное состояние и наблюдаемые свойства, полезные для программирования асинхронных задач в JavaFX, как определено в интерфейсе Worker. Реализация задачи должна переопределять метод call(). Этот метод вызывается в фоновом потоке. Любое состояние, используемое в этом методе, должно быть безопасно для чтения и записи из фонового потока. Например, манипулирование живой схемой сцены из этого метода небезопасно и приведет к исключениям во время выполнения.

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

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

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

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

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

    Поскольку задача предназначена для использования с графическими приложениями JavaFX, она гарантирует, что каждое изменение ее публичных свойств, а также уведомления о состоянии, ошибках и обработчиках событий происходят в основном потоке приложения 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;
             }
         };
     

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

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

    Этот пример добавляет к предыдущим примерам блокирующий вызов. Поскольку блокирующий вызов может вызывать 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 связан с узлами схемы сцены (например, элементами пользовательского интерфейса), то может быть нарушено правило потоков! Для таких случаев изменяйте объект 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;
             }
         };
     

    Реагирование на изменения состояния в общем виде

    Иногда может потребоваться написать задачу, которая обновляет свой прогресс, сообщение, текст или каким-либо другим образом реагирует всякий раз, когда происходит изменение состояния в задаче. Например, вы можете изменить сообщение состояния задачи при изменении состояния задачи на Failure, Success, Running или Cancelled.

    
         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
  • Краткое описание свойств

    Свойства
    Тип Свойство Описание
    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()
    Вызывается при выполнении задачи, метод call должен быть переопределён и реализован подклассами.
    boolean cancel()
    Прекращает выполнение этого потока.
    boolean cancel​(boolean mayInterruptIfRunning)
    protected void cancelled()
    Защищённый вспомогательный метод для подклассов, вызываемый всякий раз, когда состояние задачи переходит в состояние ОТМЕНЁН.
    ReadOnlyObjectProperty<Throwable> exceptionProperty()
    Возвращает ReadOnlyObjectProperty, представляющий любую возникшую ошибку.
    protected void 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 вызывается всякий раз, когда состояние задачи Task переходит в состояние SCHEDULED.
    void setOnSucceeded​(EventHandler<WorkerStateEvent> value)
    Обработчик события onSucceeded вызывается всякий раз, когда состояние задачи Task переходит в состояние SUCCEEDED.
    ReadOnlyObjectProperty<Worker.State> stateProperty()
    Возвращает ReadOnlyObjectProperty, представляющий текущее состояние.
    protected void succeeded()
    Защищённый вспомогательный метод для подклассов, вызываемый всякий раз, когда состояние задачи Task переходит в состояние 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, toString
    • Методы, унаследованные от класса java.lang.Object

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

    • state

      public final ReadOnlyObjectProperty<Worker.State> stateProperty
      Определено в:
      stateProperty в интерфейсе Worker<V>
      См. также:
      getState()
    • onScheduled

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

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

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

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

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

      public final ReadOnlyObjectProperty<V> valueProperty
      Определено в:
      valueProperty в интерфейсе Worker<V>
      См. также:
      getValue()
    • exception

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

      public final ReadOnlyDoubleProperty workDoneProperty
      Определено в:
      workDoneProperty в интерфейсе Worker<V>
      См. также:
      getWorkDone()
    • totalWork

      public final ReadOnlyDoubleProperty totalWorkProperty
      Определено в:
      totalWorkProperty в интерфейсе Worker<V>
      См. также:
      getTotalWork()
    • progress

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

      public final ReadOnlyBooleanProperty runningProperty
      Определено в:
      runningProperty в интерфейсе Worker<V>
      См. также:
      isRunning()
    • message

      public final ReadOnlyStringProperty messageProperty
      Определено в:
      messageProperty в интерфейсе Worker<V>
      См. также:
      getMessage()
    • title

      public final ReadOnlyStringProperty titleProperty
      Определено в:
      titleProperty в интерфейсе Worker<V>
      См. также:
      getTitle()
  • Подробное описание конструкторов

    • Task

      public Task()
      Создаёт новую задачу.
  • Подробное описание методов

    • вызов

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      public final V getValue()
      Получает значение свойства значение.
      Указано в:
      getValue в интерфейсе Worker<V>
      Описание свойства:
      Возвращает:
      текущее значение этого обработчика
    • 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>
      См. также:
      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 до 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. Если переданное значение отрицательное, или Infinity, или NaN, то результирующее percentDone будет -1 (следовательно, неопределённое).
      max - значение от Double.MIN_VALUE до Double.MAX_VALUE. Infinity и 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)
      Регистрирует обработчик событий для этой задачи. Сначала обрабатываются все фильтры событий, затем указанные обработчики событий onFoo, и, наконец, все обработчики событий, зарегистрированные этим методом. Как и при других событиях в дереве сцены, если событие потребляется, оно не будет продолжать распространяться.
      Параметры типа:
      T - конкретный класс события обработчика
      Параметры:
      eventType - тип событий, которые должен получать обработчик
      eventHandler - регистрируемый обработчик
      Исключения:
      NullPointerException - если тип события или обработчик null
      С:
      JavaFX 2.1
    • removeEventHandler

      public final <T extends Event> void removeEventHandler​(EventType<T> eventType,
                                                             EventHandler<? super T> eventHandler)
      Удаляет ранее зарегистрированный обработчик событий из этой задачи. Один обработчик может быть зарегистрирован для разных типов событий, поэтому вызывающему коду необходимо указать конкретный тип события, из которого нужно удалить обработчик.
      Параметры типа:
      T - конкретный класс события обработчика
      Параметры:
      eventType - тип события, из которого необходимо удалить обработчик
      eventHandler - удаляемый обработчик
      Исключения:
      NullPointerException - если тип события или обработчик null
      С:
      JavaFX 2.1
    • addEventFilter

      public final <T extends Event> void addEventFilter​(EventType<T> eventType,
                                                         EventHandler<? super T> eventFilter)
      Регистрирует фильтр событий для этой задачи. Зарегистрированные фильтры событий получают событие до любых связанных обработчиков событий.
      Параметры типа:
      T - конкретный класс события фильтра
      Параметры:
      eventType - тип событий, которые должен получать фильтр
      eventFilter - регистрируемый фильтр
      Исключения:
      NullPointerException - если тип события или фильтр null
      С:
      JavaFX 2.1
    • removeEventFilter

      public final <T extends Event> void removeEventFilter​(EventType<T> eventType,
                                                            EventHandler<? super T> eventFilter)
      Удаляет ранее зарегистрированный фильтр событий из этой задачи. Один фильтр может быть зарегистрирован для разных типов событий, поэтому вызывающему коду необходимо указать конкретный тип события, из которого нужно удалить фильтр.
      Параметры типа:
      T - конкретный класс события фильтра
      Параметры:
      eventType - тип события, из которого необходимо удалить фильтр
      eventFilter - удаляемый фильтр
      Исключения:
      NullPointerException - если тип события или фильтр null
      С:
      JavaFX 2.1
    • setEventHandler

      protected final <T extends Event> void setEventHandler​(EventType<T> eventType,
                                                             EventHandler<? super T> eventHandler)
      Устанавливает обработчик для этого типа события. Одновременно может быть указан только один такой обработчик. Этот обработчик гарантированно вызывается первым. Используется для регистрации пользовательских обработчиков событий onFoo.
      Параметры типа:
      T - конкретный класс события обработчика
      Параметры:
      eventType - тип события, который следует связать с заданным eventHandler
      eventHandler - регистрируемый обработчик или null для удаления
      Исключения:
      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. Этот целевой объект не добавляется автоматически в цепочку, поэтому, если он хочет обрабатывать события, ему нужно добавить EventDispatcher для себя в цепочку.

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

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

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

      Определено:
      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