【问题标题】:JavaFX Dynamically Adding Elements to a GridPaneJavaFX 将元素动态添加到 GridPane
【发布时间】:2014-04-13 23:20:35
【问题描述】:

我对 JavaFX 比较陌生,我一直很困惑为什么下面的代码没有产生预期的结果,即添加到网格的标签。

我要做的是运行一个测试以将 JavaFX 标签添加到我的 FXML GridPane,因为我想在不久的将来构造一个方法,允许用户选择一个文件,然后生成一个标签当用户选择了一个文件并将该标签添加到 GridPane 时。

提前致谢,

代码:

private Label label1;

@FXML
private GridPane gridPane;

@FXML
public void handle() {

    FileChooser fileChooser = new FileChooser();
    fileChooser.setTitle("Select File");
    fileChooser.getExtensionFilters().addAll(
            new FileChooser.ExtensionFilter("Video Files", "*.mp4", "*.avi"),
            new FileChooser.ExtensionFilter("Audio Files", "*.wav", "*.mp3", "*.aac"),
            new FileChooser.ExtensionFilter("All Files", "*.*"));
    //Show open file dialog
    File file = fileChooser.showOpenDialog(null);

    try {
        System.out.println(file.getPath());
        System.out.println(file.getName());
        label1.setText(file.getName());
        gridPane.add(label1, 1, 1);
    } catch (Exception e) {
    }

}

FXML 代码是一个标准文件,带有定义的 GridPane 和上面列出的 fx:id。

【问题讨论】:

  • 那么它在做什么呢?

标签: java javafx javafx-2


【解决方案1】:

你没有在任何地方初始化你的标签,所以它是空的。由于您正在压缩异常,因此您看不到调用 label1.setText(...) 时生成的 NullPointerException

【讨论】:

  • 哦!这就是为什么我得到了例外。谢谢。但是我将如何在 FXML 之外创建标签并将组件添加到 GUI 中呢?例如,在这种情况下,我想制作一个标签、setText 并将其添加到 FXML 类之外的 GridPane。
  • 不确定我是否理解问题所在。只需执行Label label1 = new Label(file.getName());,然后像以前一样执行gridPane.add(label1,1,1);
  • 我的错。我忘了初始化标签。谢谢
猜你喜欢
  • 2014-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-31
  • 1970-01-01
相关资源
最近更新 更多