调用 setGridLinesVisible(true) 时,GridPane 布局调试行未按预期显示

Posted

技术标签:

【中文标题】调用 setGridLinesVisible(true) 时,GridPane 布局调试行未按预期显示【英文标题】:GridPane layout debugging lines aren't displayed as expected when calling setGridLinesVisible(true) 【发布时间】:2019-05-03 13:47:42 【问题描述】:

我正在尝试在 JavaFX 中显示 GridPane 场景的网格线,但尽管调用了 setGridLinesVisible(true),但它们并没有显示出来。我做错了什么?

我想在我的程序主菜单上显示网格线,这样我就可以知道在哪里放置节点。不幸的是,当我运行程序时,显示的只是一个带有单个按钮的空白屏幕。

我的 MainMenu 类:

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;
   

我的主班:

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);
   

已显示:

【问题讨论】:

【参考方案1】:

JavaFX 的 GridPane 类只会创建程序员在设置网格上对象的位置时定义的点数。

例如,如果将一个对象添加到网格中,并且 x 和 y 位置都等于 0,那么网格将只有一个 (x, y) 位置,即 (0, 0)。

此外,即使网格有很多位置,除非程序员设置了HGapVgapgrid 属性,否则网格的所有“位置”都将位于由程序。

问题是我没有调整HGapVGap 属性,所以整个网格只聚集在窗口中的一个点上。这使得看不到任何线条。

用下面的代码替换 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;

这是我修复程序后显示的内容。

【讨论】:

以上是关于调用 setGridLinesVisible(true) 时,GridPane 布局调试行未按预期显示的主要内容,如果未能解决你的问题,请参考以下文章

黄聪:Jquery+DataTables插件,如何在ajax调用服务器数据后,自动给tr添加id属性

QT调用python脚本

帝国CMS7.0的多值字段如何循环调用?

Linux命令 tr

tr的梗

点击modal确定键后删除tr