tableau colonne de ne pas en prendre plein la taille de l'affichage de la table en javaFX
je suis en train de créer un tableau avec deux colonnes.
je suis l'aide de la scene builder inclus dans netbeans 7.2.
dans tous les exemples que j'ai vu tout ce que vous devez faire est de glisser la colonne de table à la table et qu'il va prendre la pleine taille, ce n'est pas vrai dans mon cas.
c'est le fxml fichier généré par la scène du générateur.
juste pour être clair, je ne suis pas de changer les propriétés de la table de la java.
le fxml:
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.net.*?>
<?import java.util.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.text.*?>
<AnchorPane id="AnchorPane" prefHeight="758.0" prefWidth="956.0" styleClass="screen" xmlns:fx="http://javafx.com/fxml" fx:controller="bgu.dcr.az.cpu.ui.expb.ExperimentBuilderScreen">
<children>
<GridPane id="gridPane1" prefHeight="517.0" prefWidth="600.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<children>
<Label id="label1" alignment="CENTER" contentDisplay="CENTER" prefHeight="38.0" prefWidth="9999.0" styleClass="caption" text="Create New Experiment" textFill="#990000" GridPane.columnIndex="0" GridPane.rowIndex="0">
<font>
<Font name="Consolas Bold" size="20.0" />
</font>
</Label>
<HBox id="hBox1" alignment="CENTER" prefHeight="100.0" prefWidth="200.0" spacing="5.0" GridPane.columnIndex="0" GridPane.rowIndex="1">
<children>
<Label id="label2" graphicTextGap="0.0" styleClass="field-label" text="Experiment Name">
<font>
<Font name="Consolas" size="15.0" />
</font>
<HBox.margin>
<Insets top="3.0" />
</HBox.margin>
</Label>
<TextField id="textField1" prefWidth="200.0" HBox.hgrow="ALWAYS" />
<Button id="button2" fx:id="saveButton" styleClass="dialog-button" text="Save" />
<Button id="button3" styleClass="dialog-button" text="Dismiss" />
</children>
<padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" fx:id="x3" />
</padding>
</HBox>
<VBox id="VBox" alignment="CENTER" spacing="5.0" GridPane.columnIndex="0" GridPane.rowIndex="2">
<children>
<Label id="label3" prefWidth="9999.0" styleClass="field-label" text="Experiment Tests">
<VBox.margin>
<Insets left="5.0" top="5.0" />
</VBox.margin>
</Label>
<HBox id="HBox" alignment="CENTER" spacing="5.0">
<children>
<Button id="button1" prefHeight="999.0" styleClass="add-button" text="New">
<HBox.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" fx:id="x3" />
</HBox.margin>
</Button>
<ListView id="listView1" fx:id="tests" orientation="HORIZONTAL" prefHeight="999.0" prefWidth="200.0" HBox.hgrow="ALWAYS">
<HBox.margin>
<Insets bottom="4.0" right="5.0" top="4.0" />
</HBox.margin>
</ListView>
</children>
</HBox>
</children>
</VBox>
<VBox id="vBox1" prefHeight="200.0" prefWidth="100.0" GridPane.columnIndex="0" GridPane.rowIndex="3">
<children>
<GridPane id="gridPane2" VBox.vgrow="ALWAYS">
<children>
<VBox id="vBox2" prefHeight="321.0" prefWidth="150.0" styleClass="with-dashed-border" GridPane.columnIndex="0" GridPane.rowIndex="0" GridPane.rowSpan="4">
<children>
<Label id="label4" text="Algorithms">
<graphic>
<ImageView id="emptyImageView1" fitHeight="32.0" fitWidth="32.0" preserveRatio="true">
<image>
<Image url="@_algo.png" preserveRatio="false" smooth="false" />
</image>
</ImageView>
</graphic>
</Label>
<Button id="button1" fx:id="newAlgorithmButton" prefWidth="999.0" styleClass="add-button" text="New" VBox.margin="$x3" />
</children>
<GridPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" fx:id="x2" />
</GridPane.margin>
</VBox>
<VBox id="vBox2" prefHeight="321.0" prefWidth="150.0" styleClass="with-dashed-border" GridPane.columnIndex="1" GridPane.margin="$x2" GridPane.rowIndex="1">
<children>
<Label id="label4" text="Problem Generator">
<graphic>
<ImageView id="emptyImageView1" fitHeight="32.0" fitWidth="32.0" preserveRatio="true">
<image>
<Image url="@_pgen.png" preserveRatio="false" smooth="false" />
</image>
</ImageView>
</graphic>
</Label>
<Button id="button1" maxHeight="999.0" prefHeight="999.0" prefWidth="999.0" styleClass="add-button" text="New" VBox.margin="$x3" VBox.vgrow="ALWAYS" />
</children>
</VBox>
<VBox id="vBox2" prefHeight="321.0" prefWidth="150.0" styleClass="with-dashed-border" GridPane.columnIndex="2" GridPane.margin="$x2" GridPane.rowIndex="1">
<children>
<Label id="label4" prefWidth="9999.0" text="Correctness tester">
<graphic>
<ImageView id="emptyImageView1" fitHeight="32.0" fitWidth="32.0" preserveRatio="true">
<image>
<Image url="@_ctest.png" preserveRatio="false" smooth="false" />
</image>
</ImageView>
</graphic>
</Label>
<Button id="button1" maxHeight="999.0" maxWidth="999.0" prefHeight="999.0" prefWidth="999.0" styleClass="add-button" text="New" VBox.margin="$x3" VBox.vgrow="ALWAYS" />
</children>
</VBox>
<VBox id="vBox2" prefHeight="321.0" prefWidth="150.0" styleClass="with-dashed-border" GridPane.columnIndex="1" GridPane.margin="$x2" GridPane.rowIndex="2">
<children>
<Label id="label4" prefWidth="130.0" text="Message delayer">
<graphic>
<ImageView id="emptyImageView1" fitHeight="32.0" fitWidth="32.0" preserveRatio="true">
<image>
<Image url="@_mdel.png" preserveRatio="false" smooth="false" />
</image>
</ImageView>
</graphic>
</Label>
<Button id="button1" maxHeight="999.0" maxWidth="999.0" prefHeight="999.0" prefWidth="999.0" styleClass="add-button" text="New" VBox.margin="$x3" VBox.vgrow="ALWAYS" />
</children>
</VBox>
<VBox id="vBox2" prefHeight="321.0" prefWidth="150.0" styleClass="with-dashed-border" GridPane.columnIndex="2" GridPane.margin="$x2" GridPane.rowIndex="2">
<children>
<Label id="label4" prefWidth="130.0" text="Limiter">
<graphic>
<ImageView id="emptyImageView1" fitHeight="32.0" fitWidth="32.0" preserveRatio="true">
<image>
<Image url="@_limiter.png" preserveRatio="false" smooth="false" />
</image>
</ImageView>
</graphic>
</Label>
<Button id="button1" maxHeight="999.0" maxWidth="999.0" prefHeight="999.0" prefWidth="999.0" styleClass="add-button" text="New" VBox.margin="$x3" VBox.vgrow="ALWAYS" />
</children>
</VBox>
<VBox id="vBox2" prefHeight="321.0" prefWidth="150.0" styleClass="with-dashed-border" GridPane.columnIndex="3" GridPane.margin="$x2" GridPane.rowIndex="0" GridPane.rowSpan="4">
<children>
<Label id="label4" prefWidth="9999.0" text="Statistic collectors">
<graphic>
<ImageView id="emptyImageView1" fitHeight="32.0" fitWidth="32.0" preserveRatio="true">
<image>
<Image url="@_scol.png" preserveRatio="false" smooth="false" />
</image>
</ImageView>
</graphic>
</Label>
<Button id="button1" prefWidth="999.0" styleClass="add-button" text="New" VBox.margin="$x3" />
</children>
</VBox>
<HBox id="hBox1" alignment="CENTER" prefHeight="100.0" prefWidth="200.0" spacing="5.0" GridPane.columnIndex="1" GridPane.columnSpan="2" GridPane.rowIndex="0">
<children>
<Label id="label2" graphicTextGap="0.0" styleClass="field-label" text="Name">
<HBox.margin>
<Insets top="7.0" />
</HBox.margin>
</Label>
<TextField id="textField1" maxHeight="28.0" minHeight="28.0" prefHeight="28.0" prefWidth="200.0" text="Empty Test" HBox.hgrow="ALWAYS" />
</children>
<padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" fx:id="x3" />
</padding>
</HBox>
<VBox id="vBox3" prefHeight="200.0" prefWidth="100.0" GridPane.columnIndex="1" GridPane.rowIndex="3" />
</children>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
</GridPane>
</children>
</VBox>
<VBox id="vBox4" alignment="CENTER" styleClass="with-dashed-border" GridPane.columnIndex="0" GridPane.halignment="CENTER" GridPane.hgrow="ALWAYS" GridPane.rowIndex="4" GridPane.valignment="CENTER" GridPane.vgrow="ALWAYS">
<children>
<TableView id="tableView1" prefHeight="54.0" prefWidth="837.0" VBox.vgrow="ALWAYS">
<columns>
<TableColumn prefWidth="75.0" text="Column X" />
<TableColumn prefWidth="75.0" text="Column X" />
</columns>
</TableView>
</children>
<GridPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" fx:id="x2" />
</GridPane.margin>
</VBox>
</children>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints maxHeight="38.0" minHeight="38.0" prefHeight="38.0" vgrow="NEVER" />
<RowConstraints maxHeight="32.0" minHeight="32.0" prefHeight="32.0" vgrow="NEVER" />
<RowConstraints maxHeight="100.0" minHeight="100.0" prefHeight="100.0" vgrow="SOMETIMES" />
<RowConstraints vgrow="SOMETIMES" />
<RowConstraints maxHeight="100.0" prefHeight="100.0" valignment="CENTER" vgrow="ALWAYS" />
</rowConstraints>
</GridPane>
</children>
<stylesheets>
<URL value="@_style.css" />
<URL value="@../_style.css" />
</stylesheets>
</AnchorPane>
Vous devez vous connecter pour publier un commentaire.
Mise à jour
De nouvelles fonctionnalités dans le JavaFX 2.2+ versions ont rendu cette réponse obsolète lorsqu'il est appliqué avec un FXML document.
Un FXML solution utilise les nouvelles FXML fonctions pour permettre à la taille de la colonne pour être réglé via le FXML est fourni dans: FXML ensemble TableView colonne de redimensionnement de la politique.
Si vous n'êtes pas à l'aide de FXML la TableView de redimensionnement de la politique peut encore être définie par le code tel que défini dans la présente réponse:
Dans votre FXML, vous avez défini la largeur préférée de la table à 837, et que la largeur de chaque colonne à 75. Par défaut, le JavaFX colonne de redimensionnement de la politique de garder les colonnes à leur choix de largeurs. Vous n'allez pas obtenir les colonnes de la table de remplissage de la largeur de l'ensemble de votre table, à moins que vous définissez une nouvelle colonne de redimensionnement de la politique ou de l'ensemble de la somme de la pratique de la largeur de l'ensemble de vos colonnes pour ajouter à votre largeur de la table.
JavaFX fournit un mécanisme pour modifier la valeur par défaut de la colonne de redimensionnement de la politique. Par le réglage de la colonne de redimensionnement de la politique à un CONSTRAINED_RESIZE_POLICY, la somme de la largeur de chaque colonne sera contraint de remplir la largeur de la tableview - même si la tableview est redimensionnée ou des colonnes individuelles sont redimensionnées. C'est probablement le comportement que vous désirez.
Il y a peut être un moyen de définir un CONSTRAINED_RESIZE_POLICY sur un tableView de FXML, je ne suis pas au courant d'un (si mes compétences dans le fxml sont rudimentaires, alors peut - être que quelqu'un de plus informé que peut accomplir la configuration à l'aide de pure fxml).
Ce que vous pouvez faire est de définir un contrôleur pour votre fichier fxml et ensuite configurer la stratégie de redimensionnement dans le contrôleur. Le code suivant montre un exemple complet (écrit contre le JavaFX 2.2b17 aperçu).
FXML fichier:
Classe de contrôleur:
Classe d'Application:
<TreeTableView fx:id="eltTree" > <columnResizePolicy><TreeTableView fx:constant="CONSTRAINED_RESIZE_POLICY"/></columnResizePolicy>
Il n'est actuellement pas possible de définir une
CONSTRAINED_RESIZE_POLICY
sur untableView
de FXML :https://forums.oracle.com/forums/thread.jspa?threadID=2337733
CONSTRAINED_RESIZE_POLICY
sur untableView
de FXML (voir ma réponse mis à jour pour la syntaxe).Dans le cas où vous utiliser JavaFX GUI builder "SceneBuilder 2.0" - utilisation TableView propriété ColumnResizePolicy "contraint de redimensionnement" de la valeur.