JavaFX tableview redimensionner pour s'adapter à la fenêtre
Je suis juste essayer de JavaFX et je suis forcer ma façon de voir les choses, car il est supposé être à l'avenir. Je suis en train de créer un tableau avec 4 colonnes. Les colonnes ET LA TABLE doit redimensionner pour remplir le parent volet. Je ne peux pas pour la vie de me débarrasser de ce travail. J'ai essayé pendant plus de 4 heures maintenant et la tableview n'est pas redimensionnée.
Voici mon fichier 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.*?>
<?import java.net.*?>
<?import javafx.geometry.*?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.*?>
<?import javafx.scene.control.cell.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.text.*?>
<?import javafx.collections.*?>
<?import t.cubed.fxml.*?>
<BorderPane styleClass="root" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8" fx:controller="t.cubed.fxml.FXMLDocumentController">
<top>
<MenuBar fx:id="menuBar" styleClass="menu-bar">
<menus>
<Menu text="File">
<items>
<MenuItem onAction="#handleOpenAction" text="Open" />
<MenuItem onAction="#handleExitAction" text="Exit" />
</items>
</Menu>
<Menu text="Edit">
<items>
<MenuItem onAction="#handleWeightAction" text="Edit Weights" />
<MenuItem onAction="#handleFilterAction" text="Edit Filters" />
<MenuItem onAction="#handleOptionsAction" text="Options" />
</items>
</Menu>
</menus>
</MenuBar>
</top>
<center>
<GridPane>
<!--
<padding>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/>
</padding>
-->
<TableView fx:id="testTable" GridPane.columnIndex="0" GridPane.rowIndex="0" GridPane.columnSpan="1">
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
</columnResizePolicy>
<columns>
<TableColumn text="TEST NUMBER">
<cellValueFactory>
<PropertyValueFactory property="testNumber" />
</cellValueFactory>
</TableColumn>
<TableColumn text="TEST NAME">
<cellValueFactory>
<PropertyValueFactory property="testName" />
</cellValueFactory>
</TableColumn>
<TableColumn text="TEST TIME(ms)">
<cellValueFactory>
<PropertyValueFactory property="testTime" />
</cellValueFactory>
</TableColumn>
<TableColumn text="BEST MATCH">
<cellValueFactory>
<PropertyValueFactory property="bestMatch" />
</cellValueFactory>
</TableColumn>
</columns>
<items>
<!--
<FXCollections fx:factory="observableArrayList">
<TestTableModel testNumber="100" testName="Test1234" testTime="0.34" bestMatch="99"/>
</FXCollections>
-->
</items>
</TableView>
</GridPane>
</center>
<stylesheets>
<URL value="@t-cubed.css" />
</stylesheets>
</BorderPane>
Utiliser un AnchorPane au lieu de GridPane.
OriginalL'auteur user3403469 | 2014-05-15
Vous devez vous connecter pour publier un commentaire.
Comment Redimensionnable Mise En Page Fonctionne
La taille des éléments redimensionnables en JavaFX est géré par les gestionnaires de disposition dans laquelle les éléments sont placés.
Ce que vous devez faire
Pour votre problème spécifique, vous devez définir la GridPane dimensionnement des contraintes à gérer la TableView que vous avez placé dans la grille.
Voir le
GridPane.hgrow
etGridPane.vgrow
contraintes que j'ai ajouté sur la TableView:FXML juste reflète les API Java, de sorte que vous pourriez aussi faire la même chose en Java de la source ainsi; c'est à dire
GridPane.setHGrow(nœud, la priorité)
. Cependant, si vous utilisez FXML pour votre mise en page, la définition de la contrainte de mise en page dans le FXML est recommandé.Remaniée De L'Échantillon
J'ai chargé votre FXML dans Scene Builder 2 et définir les contraintes et il semble redimensionner automatiquement fin lorsque j'utilise la fonctionnalité d'aperçu de la Scène Builder.
Quelques Conseils
Vous placez la TableView à l'intérieur d'un GridPane. À l'aide d'un GridPane dans votre cas est un peu étrange comme la GridPane vous mettez un nœud dans le GridPane. Simplement en plaçant le TableView directement dans le centre de votre BorderPane ou à l'aide d'une simple mise en page parent comme un StackPane ont travaillé très bien. Mais peut-être que ce est juste une version réduite de plus en plus complexe de l'INTERFACE utilisateur, de sorte que peut-être c'est pourquoi vous avez utilisé un GridPane.
Lecture
Si vous avez le temps, lisez sur mise en page dans JavaFX dans le Nœud, Volet, Groupe et GridPane javadoc et essayez ce petit la disposition des bornes de démo trop.
Questions supplémentaires pour les Commentaires
StackPanes n'avez pas besoin d'un Hgrow ou Vgrow contraintes. Ces contraintes Les priorités, qui sont définies comme suit:
Avec un StackPane, tous les enfants sont couches sur le dessus les uns des autres, ils ne sont pas en compétition pour l'espace, de sorte que cette croissance paramètres de priorité pour les nœuds enfants ne sont pas applicables.
Vous(Ou était-ce @will ? ) mentionnent un StackPane, mais StackPanes ne semblent pas avoir Hgrow et Vgrow?
OriginalL'auteur jewelsea
Après quelques devoirs, nous sommes venus avec des de qualification de l'information sur FXML conteneurs. Peu près pour la même raison que ci-dessus par @user3403469. Dans la Scène du Générateur, il y a une longue liste de " conteneurs'. À mon humble avis, que ces 9 éléments et Volet qualifier en tant que conteneur de mise en forme, comme ils héritent de
<Volet> ... parent de tous les Volet classes. Tout à la fois, Volet et Contrôle hériter de la Région, seul le Volet de l'enfant-les classes ont des propriétés de mise en page.
Vous pouvez considérer que le Contrôle de l'enfant-les classes plus ou moins hériter des Événements et des actions. Mise en page comme les choses doivent venir de l'encapsulation de la région, et la seule chose dont les éléments de mise en page disponibles pour envelopper un "Contrôle" est-un "Volet'.
Ces FXML éléments serait le sur-mesure 'la disposition des gestionnaires décrit dans le @jewelsea de réponse et d'ailleurs.
Je suppose que le "Contrôle" des conteneurs sont toujours des conteneurs dans le FXML. Il semble qu'ils ont besoin d'être 'à l'intérieur d'un panneau pour faire le bien 😉
Corrections et commentaires bienvenus.
liées:
OriginalL'auteur will