как установить TextField в 4 столбца пробелов JavaFx

Я хочу создать калькулятор в JavaFx. Я использую GridPane, чтобы установить положение кнопок калькулятора и текстового поля. Мой вопрос: как я могу установить TextField в 4 столбца?

В следующем примере:

  TextField userTextField = new TextField();
    grid.add(userTextField, 0, 0,3,3);

Что означают координаты 0,0, 3, 3 в сетке? Что это значит? Любая помощь приветствуется, большое спасибо.

В следующей программе javafx я хочу установить только TextField и кнопки моего образца калькулятора:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;

    public class calculadora_css extends Application{

     @Override
        public void start(Stage primaryStage) {
               primaryStage.setTitle("JavaFX Welcome");
               GridPane grid = new GridPane();
               grid.setAlignment(Pos.TOP_CENTER);
               grid.setHgap(20);
               grid.setVgap(20);
               grid.setPadding(new Insets(10, 10, 10, 10));

               TextField userTextField = new TextField();

               grid.add(userTextField, 0, 0,3,1);

               Button btn1 = new Button("7");
               grid.add(btn1, 0,1);
               Button btn2 = new Button("8");
               grid.add(btn2, 1,1);
               Button btn3 = new Button("9");
               grid.add(btn3, 2,1);
               Button btn3_3 = new Button("+");
               grid.add(btn3_3, 3,1);
                Button btn4 = new Button("4");
               grid.add(btn4, 0,2);
               Button btn5 = new Button("5");
               grid.add(btn5, 1,2);
               Button btn6 = new Button("6");
               grid.add(btn6, 2,2);
               Button btn6_6 = new Button("*");
               grid.add(btn6_6, 3,2);
                Button btn7 = new Button("1");
               grid.add(btn7, 0,3);
               Button btn8 = new Button("2");
               grid.add(btn8, 1,3);
               Button btn9 = new Button("3");
               grid.add(btn9, 2,3);
                Button btn9_9 = new Button("-");
               grid.add(btn9_9, 3,3);
                Button btn10 = new Button("0");
               grid.add(btn10, 0,4);
               Button btn11 = new Button(".");
               grid.add(btn11, 1,4);
               Button btn12 = new Button("=");
               grid.add(btn12, 2,4);
               Button btn12_12 = new Button("/");
               grid.add(btn12_12, 3,4);

            Scene scene = new Scene(grid, 300, 275);
            primaryStage.setScene(scene);

            scene.getStylesheets().add
           (calculadora_css.class.getResource("calculadora_css.css").toExternalForm());
            primaryStage.setResizable(false);
            primaryStage.show();

    }

     public static void main(String[] args) {
            launch(args);
        }

    }

я хочу установить кнопки под текстовым полем, но в окончательной скомпилированной программе кнопки +, *, -, / сдвинуты вправо, я попытался расположить кнопки в соответствии с комментариями выше, большое спасибо, любая помощь приветствуется


person Omar Elio Torres Castillo    schedule 15.09.2015    source источник
comment
Может быть, вы посмотрите здесь, здесь все объясняется о GridPanes: docs.oracle.com/javase/8/javafx/layout-tutorial/   -  person aw-think    schedule 15.09.2015
comment
Или просто прочитайте Javadocs   -  person James_D    schedule 15.09.2015


Ответы (1)


Дополнительные параметры, помимо columnIndex и rowIndex, которые вы найдете, — это columnspan и rowspan соответственно.

ColumnSpan позволяет использовать более одного столбца для элемента управления, который был добавлен в качестве дочернего элемента в GridPane. Точно так же RowSpan позволяет использовать более одной строки.

Либо вы можете использовать setColumnSpan(Node child,Integer value), чтобы установить colspan, или вы также можете сделать это с помощью add(Node child, int columnIndex, int rowIndex, int colspan, int rowspan) для определения диапазона столбцов при добавлении дочернего элемента.

Итак, переходя к вашему вопросу,

grid.add(userTextField, 0, 0,3,3);

означает добавление элемента управления userTextField к:

  • columnIndex 0 из gridPane
  • rowIndex 0 из gridPane
  • colSpan 3 для использования 3 столбцов, начиная с индекса столбца 0
  • rowSpan 3 для использования 3 строк, начиная с индекса строки 0
person ItachiUchiha    schedule 15.09.2015
comment
В следующей программе javafx я хочу установить только TextField и кнопки моего образца калькулятора: - person Omar Elio Torres Castillo; 16.09.2015