Наложенный узел в javafx

Может быть, название моего вопроса не очень хорошее, но на самом деле я не знаю, как его назвать.

Поэтому я постараюсь объяснить свою проблему очень ясно.

Поэтому я хочу знать, возможно ли сделать «ErrorBar» внутри моей сцены. Я понимаю под этим показывать этот элемент над другим узлом внутри сцены на короткое время. У меня есть BorderPane, и я хочу, чтобы при возникновении ошибки в моем приложении (например, ошибка веб-службы) отображалась ошибка пользователю. И для этого я хочу переместить панель сетки справа налево на экране без изменения моей сцены (например, поместить этот объект в верхнюю часть области). У меня нет примера программного обеспечения, которое это делает, но я думаю, что некоторые вещи в Javascript могут делать что-то подобное. Просто покажите зеленую или красную полосу в верхней части веб-сайта, это уже что-то показывает.

Если кто-то знает, как это сделать, это будет здорово.

На самом деле я использую последнюю версию Java 8.

Не стесняйтесь спрашивать больше, если вы хотите узнать больше о моем вопросе.

Заранее спасибо.

Фише


person fische    schedule 04.02.2014    source источник


Ответы (1)


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

person twasyl    schedule 05.02.2014
comment
Небольшой пример: ‹pre›‹code›final StackPane pane = new StackPane(); // При возникновении ошибки ... final Node errorMessage = ... pane.getChildren().add(errorMessage); // Воспроизведение перевода TranslateTransition translate = new TranslationTransition(Duration.millis(2000), errorMessage); // Определяем, куда он должен двигаться... и удаляем его в конце translation.setOnFinished(new EventHandler‹ActionEvent›() { public void handle(ActionEvent event) { pane.getChildren().remove(errorMessage); }); translate.play();‹/code›‹/pre› - person twasyl; 05.02.2014