Я создал пользовательский компонент для визуализации динамической таблицы.Он имеет следующий FXML.Это используется другим FXML.Предоставленные контроллеры не вносят никаких изменений в макет, поэтому я не публикую их здесь.
Теперь, когда я запускаю Приложение, они должны изменить размер до размера Parent.Но они этого не делают:
Компонент сам изменяет размеры до правильных границ макета, в то время как дочерние элементы BorderPane не видны, как это можно увидетьздесь:
Структура:
DynTableComponent:
Дети DynTableComponent BorderPane:
FXML:
<?import com.jfoenix.controls.JFXButton?>
<?import de.jensd.fx.glyphs.fontawesome.FontAwesomeIconView?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.HBox?>
<?import org.controlsfx.control.textfield.CustomTextField?>
<BorderPane xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.fc.gui.general.DynTableController">
<center>
<TableView BorderPane.alignment="CENTER" />
</center>
<top>
<BorderPane BorderPane.alignment="CENTER">
<right>
<HBox>
<children>
<JFXButton onAction="#buttonCloseSearchClicked" styleClass="buttonSearchClose">
<graphic>
<FontAwesomeIconView styleClass="buttonSearchCloseIcon" />
</graphic>
</JFXButton>
<CustomTextField styleClass="searchField">
<left>
<Label styleClass="searchBoxLabel">
<graphic>
<FontAwesomeIconView styleClass="searchBoxLabelIcon" />
</graphic>
</Label>
</left>
</CustomTextField>
</children>
<BorderPane.margin>
<Insets right="10.0" top="10.0" />
</BorderPane.margin>
</HBox>
</right>
</BorderPane>
</top>
<bottom>
<BorderPane maxHeight="40.0" prefHeight="40.0" prefWidth="600.0" BorderPane.alignment="CENTER">
<right>
<HBox alignment="CENTER_LEFT" maxHeight="40.0" prefHeight="40.0" prefWidth="200.0" BorderPane.alignment="CENTER">
<children>
<Label text="Label" />
</children>
</HBox>
</right>
</BorderPane>
</bottom>
</BorderPane>
DynTableComponent:
public class DynTableComponent extends BorderPane
{
private Node view;
private DynTableController controller;
public DynTableComponent()
{
super();
FXMLLoader fxmlLoader = new FXMLLoader(
getClass().getClassLoader().getResource("gui/fxml/general/DynTable.fxml"));
fxmlLoader.setControllerFactory(new Callback<Class<?>, Object>()
{
@Override
public Object call(Class<?> param)
{
return controller = new DynTableController();
}
});
try
{
view = (Node) fxmlLoader.load();
} catch (IOException ex)
{
}
getChildren().add(view);
}
public void init(Class<? extends DatabaseItem> item)
{
controller.initializeTable(item);
}
}
FXML родительского элемента:
<?xml version="1.0" encoding="UTF-8"?>
<?import com.jfoenix.controls.JFXButton?>
<?import de.jensd.fx.glyphs.fontawesome.FontAwesomeIconView?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.HBox?>
<?import org.controlsfx.control.textfield.CustomTextField?>
<?import de.fc.gui.general.DynTableComponent?>
<BorderPane xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.fc.gui.base.AddressViewController">
<center>
<DynTableComponent fx:id="dynTable"/>
</center>
</BorderPane>
У кого-нибудь есть решение этой проблемы?