Корреляция слов в R

Я собирался ввести другой вопрос, как заметил @James_D для моего комментария, потому что до тех пор, пока я не прочитал первую строку FXML по этому вопросу, я думал , что у меня другая проблема.

Для моих грехов я уменьшил задачу до простого примера одного контроллера и двух файлов FXML. Один работал, а второй сбой / не удалось.

Отправной точкой является образец Netbeans «[Click me!]». Код будет вставлен ниже. И, наконец, решение.

В качестве преамбулы позвольте мне сказать, что, кажется, все обвиняют Java-контроллер в этих ошибках загрузки. Несколько лет назад у меня было множество ошибок, подобных этому в проекте. Мы исчерпали « контроллер » отладки и, в конечном счете, нажали вперед, перестроив экраны FXML с помощью ScendBuilder. Тогда у меня не было времени расследовать.

На прошлой неделе я отлично работал на FXML-экране, который не загружался, потому что мы перенесли его в каталог времени выполнения (ранее он был в области ресурсов JAR).

KLUNK!

После того, как 3 или 4 дня изменили это, я сделал здесь комментарий о моей ошибке:

  • unknown path: 7
  • Javafx fxml LoadException: Error resolving onAction='#handleButtonAction', either the event handler is not in the Namespace or there is an error in the script.

Только в файле simple .fxml ", но не в файле Scene .fxml". Файл «simple.fxml» сокращен из файла приложения FXML, который изначально дал проблему. В этом оригинальном файле было слишком много переменных, поэтому chop-chop-chop соответствует законсервированной демонстрации.

Когда вы используете ТОЛЬКО это:

xmlns:fx="http://javafx.com/fxml"

Загрузка FXML с файлы на диске, находящиеся в папке вашего приложения, работают так же, как вы хотите, чтобы они (ну, как и я хочу, в любом случае). Глядя на FXML выше, он использует более ' хрупкое ' пространство имен, а именно

исходный FXML Queston:

  <AnchorPane ...
              xmlns="http://javafx.com/javafx/8" 
              xmlns:fx="http://javafx.com/fxml/1" ... >

Используя diff, I медленно morphed «simple.fxml» как можно ближе к «Scene.fxml», а «простой» просто не загружается. Пожалуйста, обратите внимание; всегда используя один и тот же контроллер

Загрузка FXML с другими метаданными не работала последовательно, и файл FXML был перемещен. У меня нет объяснений относительно , как это .

Например, FXML хранится в каталоге, называемом «test / resources / fxml / simple.fxml». Когда я строил оба файла в JAR проекта, « тот же » FXML в обоих загруженных случаях и работал , как и ожидалось. Для меня есть что-то не сказанное об аспектах недогрузки файла. Опять же для меня это нежелательно, потому что значение ключа KEY для определения внешней сцены будет обмениваться.

Эти виды медвежьих ловушек в разметке XML, которые (по-видимому) не подхвачены инструментами разработки, такими как SceneBuilder или FXMLLoader () являются препятствиями для прогресса в живых проектах, которые не имеют возможности исследовать эзотерическую странность , как это.

Это подтверждается нашим предыдущим опытом проекта - I было легче переделать сложный экран с SceneBuilder в целом, чем отслеживать проблемы с загрузкой, подобные этой. Призыв к действию: Диагностика на загрузке FXML - это почти требование к FXML Lint.


Controller, SimpleController.java:

  package ex.view.views;

  import java.net.URL;
  import java.util.ResourceBundle;
  import javafx.event.ActionEvent;
  import javafx.fxml.FXML;
  import javafx.fxml.Initializable;
  import javafx.scene.control.Label;

  public class SimpleController implements Initializable {

      @FXML
      private Label label;

      @FXML
      private void handleButtonAction(ActionEvent event) {
          System.out.println("You clicked me!");
          label.setText("Hello World!");
      }

      @Override
      public void initialize(URL url, ResourceBundle rb) {
          // TODO
      }    
  }

Неудачный FXML начал жизнь как один из архетипов Maven (, я думаю, ), и этот файл работал нормально, пока я не переместил файлы FXML в папку и не загрузил их из InputStream.

Я отформатировал разметку AnchorPane на нескольких строках для удобства чтения.

simple.fxml:

  <?xml version="1.0" encoding="UTF-8"?>

  <?import javafx.scene.control.Button?>
  <?import javafx.scene.control.Label?>
  <?import javafx.scene.layout.AnchorPane?>

  <AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" 
              xmlns="http://javafx.com/javafx/8.0.65" 
              xmlns:fx="http://javafx.com/fxml/1"
               fx:controller="ex.view.views.SimpleController">
      <children>
          <Button fx:id="button" layoutX="126" layoutY="90" text="Click Me!" />
          <Label fx:id="label" layoutX="126" layoutY="120" minHeight="16" minWidth="69" />
      </children>
  </AnchorPane>

Рабочая разметка FXML производится из выборок Netbeans 8.1.

Scene.fxml:

  <?xml version="1.0" encoding="UTF-8"?>

  <?import java.lang.*?>
  <?import java.util.*?>
  <?import javafx.scene.*?>
  <?import javafx.scene.control.*?>
  <?import javafx.scene.layout.*?>

  <AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" 
              xmlns:fx="http://javafx.com/fxml" 
              fx:controller="ex.view.views.SimpleController">
      <children>
          <Button layoutX="126" layoutY="90" text="Click Me!" onAction="#handleButtonAction" fx:id="button" />
          <Label layoutX="126" layoutY="120" minHeight="16" minWidth="69" fx:id="label" />
      </children>
  </AnchorPane>
1
задан Marcus Vinícius Barbosa 13 July 2018 в 17:54
поделиться