Java 外汇设定保证金
Java FX Set Margin
这个简单的示例创建了一个区域,其中包含 2 个用红色标记的矩形区域。
我想使用 VBox
边距方法将右侧区域向右推 n 个像素,但没有任何反应。为什么保证金在这个例子中不起作用?它虽然在场景生成器中工作..
public class LayoutContainerTest extends Application {
@Override
public void start(Stage primaryStage) {
VBox areaLeft = new VBox();
areaLeft.setStyle("-fx-background-color: red;");
areaLeft.setPrefSize(100, 200);
VBox areaMiddle = new VBox();
areaMiddle.setStyle("-fx-background-color: red;");
areaMiddle.setPrefSize(100, 200);
VBox areaRight = new VBox();
areaRight.setStyle("-fx-background-color: red;");
areaRight.setPrefSize(100, 200);
VBox.setMargin(areaRight, new Insets(0,0,0,50));
HBox root = new HBox(areaLeft,areaMiddle,areaRight);
root.setSpacing(30);
Scene scene = new Scene(root, 600, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
您正在使用 VBox.setMargin()
,但应该改用 HBox
方法:
HBox.setMargin(areaRight, new Insets(0, 0, 0, 50));
原因是,您正在为 VBox
的子项设置边距,而 areaRight
是 HBox
的子项。如果您要使用您的代码,然后将 areaRight
放入 VBox
,您将看到预期的边距。
你提到它在 SceneBuilder 中工作,但如果你检查实际的 FXML 代码,你会看到 SceneBuilder 正确使用 HBox
:
<VBox fx:id="areaRight" prefHeight="200.0" prefWidth="100.0" style="-fx-background-color: red;">
<HBox.margin>
<Insets left="50.0" />
</HBox.margin>
</VBox>
这个简单的示例创建了一个区域,其中包含 2 个用红色标记的矩形区域。
我想使用 VBox
边距方法将右侧区域向右推 n 个像素,但没有任何反应。为什么保证金在这个例子中不起作用?它虽然在场景生成器中工作..
public class LayoutContainerTest extends Application {
@Override
public void start(Stage primaryStage) {
VBox areaLeft = new VBox();
areaLeft.setStyle("-fx-background-color: red;");
areaLeft.setPrefSize(100, 200);
VBox areaMiddle = new VBox();
areaMiddle.setStyle("-fx-background-color: red;");
areaMiddle.setPrefSize(100, 200);
VBox areaRight = new VBox();
areaRight.setStyle("-fx-background-color: red;");
areaRight.setPrefSize(100, 200);
VBox.setMargin(areaRight, new Insets(0,0,0,50));
HBox root = new HBox(areaLeft,areaMiddle,areaRight);
root.setSpacing(30);
Scene scene = new Scene(root, 600, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
您正在使用 VBox.setMargin()
,但应该改用 HBox
方法:
HBox.setMargin(areaRight, new Insets(0, 0, 0, 50));
原因是,您正在为 VBox
的子项设置边距,而 areaRight
是 HBox
的子项。如果您要使用您的代码,然后将 areaRight
放入 VBox
,您将看到预期的边距。
你提到它在 SceneBuilder 中工作,但如果你检查实际的 FXML 代码,你会看到 SceneBuilder 正确使用 HBox
:
<VBox fx:id="areaRight" prefHeight="200.0" prefWidth="100.0" style="-fx-background-color: red;">
<HBox.margin>
<Insets left="50.0" />
</HBox.margin>
</VBox>