2015-07-23 1 views
1

Lorsque j'augmente la fenêtre, les éléments internes restent à la même taille.JavaFX - Mise à l'échelle des éléments internes d'un volet

Je veux que quand j'augmente la fenêtre, que les éléments aussi grossissent/échelle

Main.fxml:

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

<?import javafx.scene.control.*?> 
<?import javafx.scene.layout.*?> 

<AnchorPane cacheHint="SCALE_AND_ROTATE" focusTraversable="true" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller"> 
    <children> 
    <TableView fx:id="finalTable" layoutX="27.0" layoutY="358.0" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" prefHeight="190.0" prefWidth="766.0" /> 
    <Label layoutX="27.0" layoutY="21.0" prefHeight="25.0" prefWidth="149.0" text=" Quell-Datei" /> 
    <TableView fx:id="sourceTable" editable="true" layoutX="27.0" layoutY="50.0" maxHeight="900.0" maxWidth="900.0" minHeight="-Infinity" minWidth="-Infinity" prefHeight="190.0" prefWidth="766.0" /> 
    <Label layoutX="27.0" layoutY="329.0" prefHeight="25.0" prefWidth="149.0" text=" Konvertierte-Datei" /> 
    <Button fx:id="linkBtn" layoutX="313.0" layoutY="282.0" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#linkAction" prefHeight="30.0" prefWidth="90.0" text="Verbinden" /> 
    <Button fx:id="splitBtn" layoutX="437.0" layoutY="282.0" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#splitAction" prefHeight="30.0" prefWidth="90.0" text="Trennen" /> 
    </children> 
</AnchorPane> 

Im travaillant avec SceneBuilder 2.0, et je l'ai aussi essayé de "ancre" un bouton
(voir ici: http://i.imgur.com/GZyL5xC.png)
... mais la mise à l'échelle est complètement faux (voir ici: http://i.imgur.com/hmMi1p3.png)

J'ai cherché l'Internet entier pour une réponse, mais je n'ai rien trouvé qui pourrait aider.

+0

Vous pouvez utiliser une disposition différente pour cela. N'utilisez pas AnchorPane, utilisez une disposition qui vous donne la possibilité de développer vos contrôles lorsqu'ils sont redimensionnés, par exemple: GridPane ou VBox. – ItachiUchiha

+0

J'ai besoin d'un volet où je peux déplacer les éléments où je veux, mais à GridPane et VBox ce n'est pas possible? – InfernoVol

+0

C'est possible. Si vous utilisez une mise en page qui aligne automatiquement son contenu, vous pouvez toujours utiliser 'translateProperty()' pour déplacer les éléments. – ItachiUchiha

Répondre

0

Bien votre mise en page est généralement une mise en page VBox. Si votre Windows n'est pas à une taille fixe, ce sera une bonne solution, car vos boutons restent à la même hauteur et au centre de votre fenêtre. Les TableViews se développent et rétrécissent lorsque vous redimensionnez la fenêtre. Comme tu veux.

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

<?import javafx.geometry.*?> 
<?import java.lang.*?> 
<?import javafx.scene.control.*?> 
<?import javafx.scene.layout.*?> 


<VBox xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller"> 
    <children> 
    <Label prefHeight="25.0" prefWidth="149.0" text=" Quell-Datei" VBox.vgrow="NEVER" /> 
    <TableView fx:id="sourceTable" editable="true" prefHeight="200.0" prefWidth="200.0" VBox.vgrow="ALWAYS" /> 
     <Label /> 
     <HBox alignment="CENTER" prefHeight="61.0" prefWidth="766.0" spacing="20.0" VBox.vgrow="NEVER"> 
     <children> 
      <Button fx:id="linkBtn" maxHeight="-Infinity" maxWidth="-Infinity" mnemonicParsing="false" onAction="#linkAction" prefHeight="30.0" prefWidth="90.0" text="Verbinden" HBox.hgrow="NEVER" /> 
      <Button fx:id="splitBtn" maxHeight="-Infinity" maxWidth="-Infinity" mnemonicParsing="false" onAction="#splitAction" prefHeight="30.0" prefWidth="90.0" text="Trennen" HBox.hgrow="NEVER" /> 
     </children> 
     </HBox> 
    <Label prefHeight="25.0" prefWidth="149.0" text=" Konvertierte-Datei" VBox.vgrow="NEVER" /> 
    <TableView fx:id="finalTable" prefHeight="200.0" prefWidth="200.0" VBox.vgrow="ALWAYS" /> 
    </children> 
    <padding> 
     <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" /> 
    </padding> 
</VBox> 
+0

merci pour le code :) .. pouvez-vous me dire ce que ... fait? – InfernoVol

+0

C'est comme un cadre invisible intérieur. Ainsi, les composants ne touchent pas la marge. – NwDev