gpt4 book ai didi

JavaFX 不在 BorderPane 上打印网格

转载 作者:行者123 更新时间:2023-11-30 05:39:19 24 4
gpt4 key购买 nike

我正在尝试使用文本字段在 JavaFX 中编写一个简单的数独界面,但是当我尝试生成网格时,它根本不显示。我认为 fxml 文件可能有问题,但我不知道是否有必要。

我尝试使用 Gluon SceneBuilder,但我打算避免手动生成它,因为它会生成过多的代码。

我的游戏控制组件如下:

public class GameController implements Initializable {

public Pane gamePane;

@FXML
private GridPane gridPane;

@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
gridPane = new GridPane();
for (int i = 0; i < SudokuBoard.ROW_NUM; i++) {
for (int j = 0; j < SudokuBoard.ROW_NUM; j++) {
TextField field = new TextField(String.valueOf(0));
field.setFont(Font.font(24));
gridPane.add(field, i, j);
}
}

gamePane.getChildren().add(gridPane);

}
}

和我的 fxml 文件:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.BorderPane?>


<?import javafx.scene.layout.GridPane?>
<BorderPane fx:id="gamePane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
<top>
<Label fx:id="gameLabel" text="Sudoku Game" BorderPane.alignment="CENTER" />
</top>
<center>
<GridPane/>
</center>
</BorderPane>

我认为以这种方式操作代码可以产生预期的结果,但事实并非如此。难道是fxml文件阻碍了网格 Pane 文本字段的自动生成?

最佳答案

我看到的问题都缺少一些东西,但修复后它对我来说运行良好,首先你没有连接到 fxml 的 Controller ,你实际上可能不需要这个,这取决于你如何加载你的 fxml(我不能见)

我只需将此部分添加到 boarderpane 部分

fx:controller="FXMLFolder.Controller"

或者取决于您的项目结构

fx:controller="Controller"

像这样

<BorderPane fx:id="gamePane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" 
prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="FXMLTests.Controller">

接下来,您调用一个看起来像附加到 fxml 的网格 Pane ,因为注释,但它不是因为您在 fxml 中没有 fx:id ,所以更改此

<GridPane/>

<GridPane fx:id="gridPane"/>

在声明变量时尽量保持一致,这样就不会混淆其他人阅读你的代码,因此要匹配

public Pane gamePane;
@FXML
private GridPane gridPane;

public Pane gamePane;
public GridPane gridPane;
public Label gameLabel;//I added this because you have an `fx:id` in your fxml

关于JavaFX 不在 BorderPane 上打印网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55991841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com