我有一组按钮:
VBox menuButtons = new VBox();
menuButtons.getChildren().addAll(addButton, editButton, exitButton);
我想在这些按钮之间添加一些间距,而不使用CSS表。我认为应该有办法解决这个问题。
setPadding();是为了盒子里的按钮。 setMargin();应该是Box本身。但我找不到按钮间距的方法。
我很高兴有任何想法。 :)
答案 0 :(得分:52)
VBox
支持间距:
VBox menuButtons = new VBox(5);
或
menuButtons.setSpacing(5);
答案 1 :(得分:16)
只需调用setSpacing
方法并传递一些值即可。
HBox
示例(VBox
也一样):
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.scene.layout.HBoxBuilder;
import javafx.stage.Stage;
public class SpacingDemo extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
stage.setTitle("Spacing demo");
Button btnSave = new Button("Save");
Button btnDelete = new Button("Delete");
HBox hBox = HBoxBuilder.create()
.spacing(30.0) //In case you are using HBoxBuilder
.padding(new Insets(5, 5, 5, 5))
.children(btnSave, btnDelete)
.build();
hBox.setSpacing(30.0); //In your case
stage.setScene(new Scene(hBox, 320, 240));
stage.show();
}
}
这就是它的样子:
没有间距:
有间距:
答案 2 :(得分:8)
如果您使用的是FXML,请使用spacing
属性:
<VBox spacing="5" />
答案 3 :(得分:6)
正如其他人所说,您可以使用BroascastReceiver
。
但是,您也可以使用setSpacing()
,它不适用于窗格(或您的文字中的框),而是适用于个人setMargin()
。 Node
方法适用于窗格本身。实际上,setPadding()
将节点作为参数,因此您可以猜测它的用途。
例如:
setMargin()
如果用
替换该行,则可以得到相同的结果HBox pane = new HBox();
Button buttonOK = new Button("OK");
Button buttonCancel = new Button("Cancel");
/************************************************/
pane.setMargin(buttonOK, new Insets(0, 10, 0, 0)); //This is where you should be looking at.
/************************************************/
pane.setPadding(new Insets(25));
pane.getChildren().addAll(buttonOK, buttonCancel);
Scene scene = new Scene(pane);
primaryStage.setTitle("Stage Title");
primaryStage.setScene(scene);
primaryStage.show();
如果你有几个应该间隔的节点,pane.setSpacing(10);
方法更方便,因为你需要为每个单独的节点调用setSpacing()
,这将是荒谬的。但是,setMargin()
是您需要边距(duh)的节点,您可以确定每个边的数量,因为setMargin()
方法只放置空格 在节点之间,而不是在节点和窗口边缘之间。