Корневое значение уже указало исключение в CustomController при загрузке FXML - PullRequest
0 голосов
/ 18 апреля 2019

прежде всего: Я пытался:
Исключение загрузчика fxml "корневое значение уже указано" Я никогда не определял корневое значение
исключение javafx: Значение контроллера уже указано
LoadException: значение root уже указано в пользовательском элементе управления

Но решение не помогло мне: я удалил тег fx:controller из своего FXML -> Исключение, добавлено fx:root type="BorderPane всегда одинаковоЯ удаляю оператор fxmlLoader.setRoot(this) из моего пользовательского контроллера. Исключение не выдается, но макет пуст.Для лучшего понимания ниже приведены мои фрагменты кода из моего MainScreenController, где я хочу добавить пользовательский контроллер в качестве дочернего, и мой класс CustomController ImageContainer

Помощь приветствуется!

Фрагмент кода MainScreenController (только фрагмент) :

public class MainScreenController{

public TextField tf_userName;
public ListView lv_listView;
public FlowPane fp_contentFlowPane;
public SplitPane sp_splitPane;

public void onItemClicked(MouseEvent mouseEvent) throws IOException {
    int index = lv_listView.getSelectionModel().getSelectedIndex();

    if (mouseEvent.getButton().equals(MouseButton.SECONDARY)) {
        if (index >= 0) {
            lv_listView.getItems().remove(index);
            userList.remove(index);
        }
    }
    else{
        ImageContainer imgC = new ImageContainer(4,2,"location");
        fp_contentFlowPane.getChildren().add(imgC);


    }
}}

Код моего пользовательского контроллера ImageContainer:

public class ImageContainer extends Pane {

public HBox hbx_elementContainer;
public Label lb_likeCount;
public Label lb_commentCount;
public Label lb_location;
public Label lb_accountHolder;
public ImageView iv_feedImage;
private String imageLink;

public ImageContainer(int likeCount, int commentCount, String location) {

        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/image_container.fxml"));
        fxmlLoader.setController(this);
        fxmlLoader.setRoot(this);
        try {
            fxmlLoader.load();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

        this.lb_likeCount.setText(String.valueOf(likeCount));
        this.lb_commentCount.setText(String.valueOf(commentCount));
        this.lb_location.setText(location);

        Image image = new Image("/sampleFoto.JPG");
        iv_feedImage.setImage(image);

    }
}

FXML-файлмакет, который я хочу установить:

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

<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.text.Font?>


<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="200.0" prefWidth="200.0" xmlns="http://javafx.com/javafx/8.0.172-ea" xmlns:fx="http://javafx.com/fxml/1">
   <bottom>
      <HBox fx:id="hbx_elementContainer" prefHeight="31.0" prefWidth="600.0" BorderPane.alignment="CENTER">
         <children>
            <Label fx:id="lb_likeCount" contentDisplay="TOP" text="Label">
               <HBox.margin>
                  <Insets right="10.0" />
               </HBox.margin></Label>
            <Label fx:id="lb_commentCount" text="Label">
               <HBox.margin>
                  <Insets right="20.0" />
               </HBox.margin></Label>
            <Label fx:id="lb_location" text="Label" />
            <Label fx:id="lb_accountHolder" text="Label" />
          <Button mnemonicParsing="false" text="Download">
               <font>
                  <Font name="Arial Bold" size="11.0" />
               </font>
               <HBox.margin>
                   <Insets right="10.0" />
               </HBox.margin>
            </Button>
         </children>
      </HBox>
   </bottom>
   <center>
      <AnchorPane prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER">
         <children>
            <ImageView fx:id="iv_feedImage" fitHeight="150.0" fitWidth="200.0" pickOnBounds="true" preserveRatio="true" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
         </children>
      </AnchorPane>
   </center>
</BorderPane>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...