Мне интересно, имеет ли кто-нибудь большой опыт работы с JavaFX 8. Я занимаюсь манерами формы и должен их выровнять (я использую OCD с этим материалом). Я знаю, что в Swing я могу использовать GridBagLayout, но это больше не применимо, где я могу установить весы, а что нет, но я не думаю, что могу сделать это с помощью GridPane, есть ли эквивалент этого в JavaFX?Выравнивание компоновки JavaFX, эквивалентное GridBagLayout
Я не могу размещать изображения, поэтому я связал их с тем, как он выглядит на данный момент, и выделил некоторые области, которые не то, что я хочу.
https://gyazo.com/c112ab623ffd66e6f723eb9be1fcaea9
код также доступен до
public class ControlsPanel extends GridPane {
private TextField[] buttons;
private TextField[] miscTextFields;
private Label[] labels;
private Button startSimBtn;
private TabPane tabPane;
private Tab cooperatorTab, defectorTab;
private final int PADDING = 5;
private final String[] v =
{
"C_A_N", "C_A_PD",
"C_A_PN", "C_N_N",
"C_N_PD", "C_N_PN",
"D_A_N", "D_A_PD",
"D_A_PN", "D_N_N",
"D_N_PD", "D_N_PN"
};
private final String[] miscTfLabelValues =
{
"Apology cost: ", "Noise level: ", "Punishmment Cost: ", "Punished Cost: "
};
public ControlsPanel()
{
buttons = new TextField[12];
labels = new Label[buttons.length];
miscTextFields = new TextField[miscTfLabelValues.length];
for(int k = 0; k < miscTfLabelValues.length; k++)
{
miscTextFields[k] = new TextField();
}
for(int j = 0; j < buttons.length; j++)
{
buttons[j] = new TextField();
}
for(int i = 0; i < v.length; i++)
{
labels[i] = new Label(v[i]);
}
tabPane = new TabPane();
startSimBtn = new Button("Start");
cooperatorTab = new Tab("Cooperator");
defectorTab = new Tab("Defector");
layoutComponents();
}
private void layoutComponents()
{
setAlignment(Pos.TOP_LEFT);
cooperatorTab.setContent(layoutCooperatorTab());
cooperatorTab.setClosable(false);
defectorTab.setContent(layoutDefectorTab());
defectorTab.setClosable(false);
tabPane.getTabs().addAll(cooperatorTab, defectorTab);
getColumnConstraints().add(new ColumnConstraints(Values.SCREEN_WIDTH));
add(tabPane, 0, 0);
add(layoutMiscPane(), 0, 1);
}
private GridPane layoutMiscPane()
{
GridPane pane = new GridPane();
pane.setAlignment(Pos.TOP_LEFT);
pane.setHgap(10);
pane.setVgap(10);
pane.setPadding(new Insets(PADDING,PADDING,PADDING, 15));
pane.setPadding(new Insets(0, 75, 15, 15));
pane.add(new Label(miscTfLabelValues[0]), 0, 1);
pane.add(miscTextFields[0], 1, 1);
pane.setPadding(new Insets(0, -100, 0, 0));
pane.add(new Label(miscTfLabelValues[1]), 0, 2);
pane.add(miscTextFields[1], 1, 2);
//
pane.add(new Label(miscTfLabelValues[2]), 0, 3);
pane.add(miscTextFields[2], 1, 3);
//
pane.add(new Label(miscTfLabelValues[3]), 0, 4);
pane.add(miscTextFields[3], 1, 4);
return pane;
}
private GridPane layoutCooperatorTab()
{
GridPane pane = new GridPane();
pane.setAlignment(Pos.TOP_LEFT);
pane.setHgap(10);
pane.setVgap(10);
pane.setPadding(new Insets(PADDING,PADDING,PADDING, 15));
pane.add(labels[0], 0, 1);
pane.add(buttons[0], 1, 1);
pane.add(labels[1], 0, 2);
pane.add(buttons[1], 1, 2);
//
pane.add(labels[2], 0, 3);
pane.add(buttons[2], 1, 3);
//
pane.add(labels[3], 0, 4);
pane.add(buttons[3], 1, 4);
//
pane.add(labels[4], 0, 5);
pane.add(buttons[4], 1, 5);
//
pane.add(labels[5], 0, 6);
pane.add(buttons[5], 1, 6);
return pane;
}
private GridPane layoutDefectorTab()
{
GridPane pane = new GridPane();
pane.setAlignment(Pos.TOP_LEFT);
pane.setHgap(10);
pane.setVgap(10);
pane.setPadding(new Insets(PADDING,PADDING,PADDING,15));
pane.add(labels[6], 0, 1);
pane.add(buttons[6], 1, 1);
pane.add(labels[7], 0, 2);
pane.add(buttons[7], 1, 2);
//
pane.add(labels[8], 0, 3);
pane.add(buttons[8], 1, 3);
//
pane.add(labels[9], 0, 4);
pane.add(buttons[9], 1, 4);
//
pane.add(labels[10], 0, 5);
pane.add(buttons[10], 1, 5);
//
pane.add(labels[11], 0, 6);
pane.add(buttons[11], 1, 6);
return pane;
}
}
Спасибо, это помогло :) – peteratkinson1