2017-12-08 35 views
1

私はjavafxの初心者ですので、私はチャットアプリのUIで作業しています。 私は、画面の下部にテキストエリアを配置したいと思っていて、画面のサイズに関わらずこの位置に留まる必要があります。javaFX-画面の下部にテキストエリアを配置する方法

これは私のFXMLファイルです:

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

<?import com.jfoenix.controls.JFXTextArea?> 
<?import javafx.scene.control.Label?> 
<?import javafx.scene.layout.AnchorPane?> 
<?import javafx.scene.layout.ColumnConstraints?> 
<?import javafx.scene.layout.GridPane?> 
<?import javafx.scene.layout.Pane?> 
<?import javafx.scene.layout.RowConstraints?> 

<GridPane fx:id="gridParent" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="550.0" prefWidth="750.0" xmlns="http://javafx.com/javafx/9.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.bmi.client.AccueilController"> 
    <columnConstraints> 
    <ColumnConstraints hgrow="SOMETIMES" maxWidth="228.0" 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> 
    <children> 
     <AnchorPane fx:id="listePane" prefHeight="200.0" prefWidth="200.0" style="-fx-background-color: #1D232A;" /> 
     <AnchorPane fx:id="convPane" prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1"> 
     <children> 
      <Pane fx:id="namePane" prefHeight="47.0" prefWidth="375.0" style="-fx-background-color: #b0b0b0;"> 
       <children> 
        <Label fx:id="nameLabel" layoutX="14.0" layoutY="15.0" /> 
       </children> 
      </Pane> 
      <JFXTextArea fx:id="messageArea" layoutY="482.0" prefHeight="68.0" prefWidth="375.0" promptText="Ecrire un message..." style="-fx-background-color: white; -fx-border-radius: 10px;" /> 
     </children> 
     </AnchorPane> 
    </children> 
</GridPane> 

と、これは image

FXMLファイルのスクリーンショットであると私は、画面のサイズを変更するとき、私はそのような何かを得る: image2

+1

[BorderPane(https://docs.oracle.com/javase/9​​/docs/api/javafx/scene/layout/BorderPane.html)を使用します。 – VGR

+1

BorderPaneを使用している場合は、画面の上、右、下、または左に物を固定することができます。中央にもコンテンツがあります。私は、内部でAnchorPanesでGridPaneを使用する代わりに、これを行うことをお勧めします。そうすれば、サイズを変更するときに適切に移動します。 – MMAdams

+0

私はBorderPaneを使用してPanelをサイドバーとして使用できないと思いますが、TextAreaは全幅をカバーしますか? –

答えて

1

HBoxをルートとした片方向です。

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

<?import com.jfoenix.controls.JFXTextArea?> 
<?import javafx.scene.control.Label?> 
<?import javafx.scene.layout.AnchorPane?> 
<?import javafx.scene.layout.HBox?> 
<?import javafx.scene.layout.Pane?> 
<?import javafx.scene.layout.VBox?> 

<HBox prefHeight="550.0" prefWidth="750.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1"> 
    <children> 
     <AnchorPane fx:id="listePane" prefHeight="200.0" prefWidth="200.0" style="-fx-background-color: #1D232A;" /> 
     <VBox prefHeight="200.0" prefWidth="100.0" HBox.hgrow="ALWAYS"> 
     <children> 
      <Pane fx:id="namePane" prefHeight="47.0" prefWidth="375.0" style="-fx-background-color: #b0b0b0;" VBox.vgrow="ALWAYS"> 
       <children> 
        <Label fx:id="nameLabel" layoutX="14.0" layoutY="15.0" /> 
       </children> 
      </Pane> 
      <JFXTextArea fx:id="messageArea" prefHeight="68.0" prefWidth="375.0" promptText="Ecrire un message..." style="-fx-background-color: white; -fx-border-radius: 10px;" /> 
     </children> 
     </VBox> 
    </children> 
</HBox> 
関連する問題