Ответ 1
VBox
поддерживает интервал:
VBox menuButtons = new VBox(5);
или
menuButtons.setSpacing(5);
У меня есть набор кнопок:
VBox menuButtons = new VBox();
menuButtons.getChildren().addAll(addButton, editButton, exitButton);
Я хочу добавить промежуток между этими кнопками, не используя лист CSS. Я думаю, что для этого должен быть способ.
setPadding(); для кнопок в ящике. setMargin(); должен быть для самой коробки. Но я не нашел способ для расстояния между кнопками.
Я рад за любые идеи.:)
VBox
поддерживает интервал:
VBox menuButtons = new VBox(5);
или
menuButtons.setSpacing(5);
Просто вызовите метод 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();
}
}
И вот как это выглядит:
Без интервала:
С интервалом:
Если вы используете FXML, используйте атрибут spacing
:
<VBox spacing="5" />
Как уже упоминалось, вы можете использовать setSpacing()
.
Однако вы также можете использовать setMargin()
, это не для панели (или поля в ваших словах), это для отдельных Node
s. setPadding()
метод предназначен для самой панели. Фактически, setMargin()
принимает параметр node как параметр, поэтому вы можете догадаться, для чего он нужен.
Например:
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()
для каждого отдельного node, и это было бы смешно. Тем не менее, setMargin()
- это то, что вам нужно, если вам нужны поля (duh) вокруг node, которые вы можете определить, насколько каждая сторона, потому что методы setSpacing()
помещают пробелы только между узлами, а не между node и краями окна.