我对JavaFX比较陌生,我一直很困惑为什么我的代码下面的代码没有产生预期的结果,即添加到网格中的标签。
我要做的是运行测试,将JavaFX Label添加到我的FXML GridPane,因为我想在不久的将来构建一个方法,允许用户选择一个文件,然后生成一个标签当用户选择文件并将该Label添加到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。
答案 0 :(得分:1)
您不会在任何地方初始化标签,因此它为空。因为你正在压缩异常,所以你看不到调用label1.setText(...)时生成的NullPointerException