web-dev-qa-db-ja.com

JavaFX HBoxアライメント

私はJavaFXを使用してソフトウェアの作業を行ってきましたが、愚かではあるが心配な問題があります。

コードの特定の部分にHBoxがあり、その中に3つの項目、imagelabel、およびVBoxがあります。

問題は、imageを左に、つまりwindowの左マージンの隣に、VBoxを右に揃えたいことです。 、つまり、windowの右境界線の横にあり、その方法がわかりません。

VBox.setAlignment(Pos.RIGHT_CENTER)を使用しようとしましたが、機能しませんでした。

13
JOSEMAFUEN

これは、レイアウトの2つの角にアイテムを配置する場合の最も一般的な配置の問題です。

あなたが持ちたいと言ってみましょう:

HBox
  |
  ImageView (Left)
  Label (Center)
  VBox (Right)

私が非常に簡単な解決策は、2つの余分なRegionsを使用することです。 ImageViewとLabelの間の1つ。もう1つは、LabelとVBoxの間にあります。

HBox
  |
  ImageView (Left)
  Region
  Label (Center)
  Region
  VBox (Right)

これらのリージョンには、HGrowPriority.Always。したがって、HBoxのサイズを変更すると、これら2つが大きくなり、他の要素はその場所にそのまま残ります。

FXMLの例

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

<?import javafx.scene.control.Label?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.*?>

<HBox alignment="CENTER" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="94.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <ImageView fitHeight="150.0" fitWidth="140.0" pickOnBounds="true" preserveRatio="true">
         <image>
            <Image url="http://www.imaginaformacion.com/wp-content/uploads/2010/06/JavaFx.png" />
         </image>
      </ImageView>
      <Region prefHeight="200.0" prefWidth="200.0" HBox.hgrow="ALWAYS" />
      <Label prefHeight="17.0" prefWidth="205.0" text="Label On the Center" />
      <Region prefHeight="200.0" prefWidth="200.0" HBox.hgrow="ALWAYS" />
      <VBox alignment="CENTER_RIGHT" prefHeight="94.0" prefWidth="200.0">
         <children>
            <Label prefHeight="17.0" prefWidth="200.0" text="Label Inside the VBox" />
         </children>
      </VBox>
   </children>
</HBox>

HBox.hgrow="ALWAYS"両方のリージョン。

出力

enter image description here

36
ItachiUchiha

最適なオプションはHBoxからBorderPaneに切り替えることだと思います。これにより、ウィンドウの任意のエッジにアイテムを貼り付けることができます。
別のオプションはGridPaneです。列を選択し、「Halignment」プロパティを「RIGHT」に変更できます。

ちなみに、JavaFXを楽しみながら JavaFX Scene Builder を使用することをお勧めします。

5
kcpr