Для программы, которую я делаю, мне нужно визуализировать несколько полигонов / прямоугольников.У меня есть следующий fxml-файл:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.control.SplitPane?>
<?import javafx.scene.control.TabPane?>
<?import javafx.scene.control.TitledPane?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/9.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="FX.Controller">
<children>
<TitledPane animated="false" text="Poging 1" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<content>
<SplitPane dividerPositions="0.25" prefHeight="200.0" prefWidth="200.0">
<items>
<SplitPane dividerPositions="0.5" orientation="VERTICAL" prefHeight="200.0" prefWidth="160.0">
<items>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="100.0" prefWidth="160.0">
<children>
<Label layoutX="54.0" layoutY="37.0" text="Algemene info" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="0.0" />
</children>
</AnchorPane>
<ScrollPane fx:id="restPieces_pane" prefHeight="200.0" prefWidth="200.0">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="200.0" prefWidth="200.0" />
</content>
</ScrollPane>
</items>
</SplitPane>
<TabPane fx:id="piece_Tab" prefHeight="200.0" prefWidth="200.0" tabClosingPolicy="UNAVAILABLE" />
</items>
</SplitPane>
</content>
</TitledPane>
</children>
</AnchorPane>
На панели вкладок я создаю новую вкладку для каждой «фигуры» (группы полигонов), которую пользователь хочет визуализировать.Мой код для создания полигонов и создания вкладок:
//MY_Polygon and Piece_MYPolygon extend from java.awt.Polygon
//Polygon in this piece of code is javafx.scene.shape.Polygon
public void showProblem() {
for(Piece_MYPolygon pmyp : problem.getGrotefiguren()){
//New figure => nieuwe tab
Pane pane = new Pane();
Polygon piece = new Polygon();
List<Double> piece_coords = new ArrayList<>();
for (int a=0; a<pmyp.npoints; a++){
piece_coords.add((double) pmyp.xpoints[a]);
piece_coords.add((double) pmyp.ypoints[a]);
}
piece.getPoints().addAll(piece_coords);
piece.setFill(Color.GRAY);
piece.autosize();
pane.getChildren().add(piece);
for(MYPolygon myp: pmyp.getVoids()){
List<Double> coords = new ArrayList<>();
for (int i=0; i<myp.npoints; i++){
coords.add((double) myp.xpoints[i]);
coords.add((double) myp.ypoints[i]);
}
Polygon p = new Polygon();
p.getPoints().addAll(coords);
p.setFill(Color.CYAN);
p.autosize();
pane.getChildren().add(p);
}
for(MYPolygon myp: pmyp.getForbidden_areas()){
List<Double> coords = new ArrayList<>();
for (int i=0; i<myp.npoints; i++){
coords.add((double) myp.xpoints[i]);
coords.add((double) myp.ypoints[i]);
}
Polygon p = new Polygon();
p.getPoints().addAll(coords);
p.setFill(Color.RED);
p.autosize();
pane.getChildren().add(p);
}
pane.autosize();
Tab newTab = new Tab(pmyp.getEigenschappen().get("PartRef"),pane);
piece_Tab.getTabs().add(newTab);
}
}
Что соответствует следующему, когда я запускаю свой код (и делаю приложение полноэкранным):
не имеет правильного размераimage
Это примерно половина рисунка, который мне нужно увидеть, и показанные полигоны не меняются при изменении размера приложения.Я бы с радостью принял любой способ решить эту проблему.Спасибо!