Строки отладки макета GridPane не отображаются должным образом при вызове setGridLinesVisible (true) - PullRequest
0 голосов
/ 01 декабря 2018

Я пытаюсь отобразить линии сетки сцены GridPane в JavaFX, но они не отображаются, несмотря на вызов setGridLinesVisible(true).Что я делаю не так?

Я хочу отобразить линии сетки в главном меню моей программы, чтобы я мог сказать, где разместить узлы на нем.К сожалению, когда я запускаю программу, все, что отображается, это пустой экран с одной кнопкой.

My MainMenu Class:

package screens;

import javafx.scene.layout.GridPane;
import javafx.scene.layout.Pane;

/**
 * Creates the main menu Pane object and returns it.
 * @author LuminousNutria
 */
public class MainMenu {

   public MainMenu() {}

   public Pane getPane() {
      GridPane grid = new GridPane();
      grid.setGridLinesVisible(true);

      Button bttn = new Button("button");
      grid.add(bttn, 2, 2);

      return grid;
   }
}

My MainКласс:

package mainPackage;

import screens.*;

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;

/**
 * Displays the Pane.
 * @author LuminousNutria
 */
public class Main extends Application {

   // create main menu Pane
   private Pane mainMenu = new MainMenu().getPane();

   // create Scene
   private Scene scene = new Scene(mainMenu, 1600, 900);

   @Override
   public void start(Stage stage) {

      stage.setScene(scene);
      stage.show();
   }

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

Отображается: enter image description here

1 Ответ

0 голосов
/ 01 декабря 2018

Класс JavaFX GridPane будет создавать столько точек, сколько определено программистом, когда они устанавливают положение объекта в сетке.

Например, если объект добавляется в сетку с помощью xи позиции y оба равны 0, тогда сетка будет иметь только одну (x, y) позицию, то есть (0, 0).

Кроме того, даже если сетка имеет много позиций, если только программистустанавливает атрибуты сетки HGap и Vgap, все «позиции» сетки будут находиться в одной точке в окне, созданном программой.

Проблема заключалась в том, что я не имелнастроил атрибуты HGap и VGap, чтобы вся сетка была сгруппирована только в одной точке окна.Это сделало невозможным видеть какие-либо линии.

Замена метода getPane() приведенным ниже кодом позволила мне увидеть линии сетки.

public Pane getPane() {
  GridPane grid = new GridPane();
  grid.setGridLinesVisible(true);
  grid.setVgap(8);
  grid.setHgap(8);

  Button btn = new Button("button");
  grid.add(btn, 5, 5);

  return grid;
}

Это то, что отображалось, когда я имелисправил мою программу.

enter image description here

...