Bas*_*que 2 java layout javafx
在 JavaFX 21 中,我希望HBox包含 3 个元素、一个标签和两个按钮。
HBox rowBox = new HBox ( label , buttonX , buttonY );\nRun Code Online (Sandbox Code Playgroud)\n默认情况下,小部件全部堆积在左侧。
\n就像这样,文本很少,如果我们想象我的外部方括号是边界HBox,内部方括号是每个按钮的边界:
\n\n\n
[ Short text. [ buttonX ] [ buttonY] ]
\xe2\x80\xa6 或带有更多文本的:
\n\n\n\n
[ Or lots and lots and lots of text. [ buttonX ] [ buttonY] ]
但我希望这两个按钮始终位于最右侧,如下所示:
\n\n\n\n
[ Short text. [ buttonX ] [ buttonY] ]
\n\n\n
[ Or lots and lots and lots of text. [ buttonX ] [ buttonY] ]
我试过HBox.setHgrow:
HBox.setHgrow ( label , Priority.ALWAYS );\nRun Code Online (Sandbox Code Playgroud)\n\xe2\x80\xa6 但其效果并没有给我带来任何好处 \xe2\x80\x94\xc2\xa0 元素保持在相同的位置。相反,我希望盒子的所有未分配空间都达到标签的宽度。我希望标签将两个按钮“推”到盒子的右侧。
\n我试图用一个单一的布局来完成这个布局,HBox以便我可以沿着文本的基线整齐地对齐小部件。
rowBox.setAlignment ( Pos.BASELINE_LEFT );\nRun Code Online (Sandbox Code Playgroud)\n有没有办法将所有额外空间分配给标签?
\n如果没有,是否有其他方法可以使该按钮处于正确的布局?
\n小智 5
HBox在 JavaFX 中,要实现您所描述的布局\xe2\x80\x94,其中两个按钮始终位于最右侧,并且标签占据所有剩余空间\xe2\x80\x94,您可以使用、Region和 的组合HBox.setHgrow。
就是这样:
\nRegion充当标签和按钮之间的间隔物。HBox.setHgrow使Region占用所有可用空间。这是一个代码示例:
\nimport javafx.application.Application;\nimport javafx.scene.Scene;\nimport javafx.scene.control.Button;\nimport javafx.scene.control.Label;\nimport javafx.scene.layout.HBox;\nimport javafx.scene.layout.Priority;\nimport javafx.scene.layout.Region;\nimport javafx.stage.Stage;\n\npublic class Main extends Application {\n\n @Override\n public void start(Stage primaryStage) {\n Label label = new Label("Or lots and lots and lots of text.");\n \n Button buttonX = new Button("buttonX");\n Button buttonY = new Button("buttonY");\n \n // Create a region to act as a horizontal spacer\n Region spacer = new Region();\n \n // Make the spacer Region expand as much as possible\n HBox.setHgrow(spacer, Priority.ALWAYS);\n \n HBox hbox = new HBox(label, spacer, buttonX, buttonY);\n \n Scene scene = new Scene(hbox, 400, 100);\n \n primaryStage.setScene(scene);\n primaryStage.show();\n }\n\n public static void main(String[] args) {\n launch(args);\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n在此示例中,Region命名spacer将占据 中所有额外的水平空间HBox,将按钮推到最右侧。标签将仅占用其文本所需的空间,同时spacer填充剩余空间。这可以确保无论标签的宽度如何,您的按钮都保留在最右侧。
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |