gpt4 book ai didi

JavaFX TableView/Column 空指针异常

转载 作者:行者123 更新时间:2023-12-01 09:38:02 26 4
gpt4 key购买 nike

在尝试启动表填充时,我遇到了空指针问题。我有来自名为 Komponenta 的类的对象,我将其数据放入 ObservableList 中,然后尝试在 TableView 中显示它。这次我尝试使用多个 fxml 屏幕,但由于某种原因,它无法使用超过 1 个 .fxmltest 是我在 main.fxml 上按下按钮时调用的一种方法,因此它会加载一个新按钮。

MainController.java

public ObservableList<Komponenta> komponente = FXCollections.observableArrayList(new Komponenta("Neki Tip", "Neki Proizvodac","Neki opis", 5));
@FXML
private TableView<Komponenta> Tablica;
@FXML
private TableColumn<Komponenta,String> Tip;
@FXML
private TableColumn<Komponenta,String> Proizvodac;
@FXML
private TableColumn<Komponenta,String> Karakteristika;
@FXML
private TableColumn<Komponenta,Integer> Komada;
@FXML
private void test(ActionEvent event) throws IOException{
Node node=(Node) event.getSource();
Stage stage = (Stage) node.getScene().getWindow();
Parent root = (Pane)FXMLLoader.load(getClass().getResource("ElKomponenta.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
@FXML
private void initialize() throws Exception {
System.out.println(komponente.get(0).getKomada());
Tip.setCellValueFactory(new PropertyValueFactory<Komponenta, String>("tip"));
Proizvodac.setCellValueFactory(new PropertyValueFactory<Komponenta, String>("proizvodac"));
Karakteristika.setCellValueFactory(new PropertyValueFactory<Komponenta, String>("karakteristika"));
Komada.setCellValueFactory(new PropertyValueFactory<Komponenta, Integer>("komada"));
Tablica.setItems(komponente);
}

ElKomponenta.fxml

<TableView fx:id="Tablica" prefHeight="603.0" prefWidth="889.0">
<columns>
<TableColumn fx:id="Tip" prefWidth="177.0" text="Tip" />
<TableColumn fx:id="Proizvodac" minWidth="0.0" prefWidth="207.0" text="Proizvođač" />
<TableColumn fx:id="Karakteristika" prefWidth="326.0" text="Karakteristike" />
<TableColumn fx:id="Komada" minWidth="0.0" prefWidth="178.0" text="Komada" />
</columns>
</TableView>

错误:

Caused by: java.lang.NullPointerException
at application.MainController.initialize(MainController.java:62)
... 27 more

这是首先开始setCellValueFactory的行。

如果需要的话,Komponenta.java

public class Komponenta {

private String proizvodac;
private String tip;
private String karakteristika;
private Integer komada;

public Komponenta(String a, String b, String c, Integer d){
this.tip = a;
this.proizvodac = b;
this.karakteristika = c;
this.komada = d;
}

public String getProizvodac() {
return proizvodac;
}

public void setProizvodac(String proizvodac) {
this.proizvodac = proizvodac;
}

public String getTip() {
return tip;
}

public void setTip(String tip) {
this.tip = tip;
}

public String getKarakteristika() {
return karakteristika;
}

public void setKarakteristika(String karakteristika) {
this.karakteristika = karakteristika;
}

public Integer getKomada() {
return komada;
}

public void setKomada(Integer komada) {
this.komada = komada;
}

}

最佳答案

main.fxml 似乎不包含带有 fx:id TipTableColumn,但似乎使用相同的 Controller 类。由于每次调用使用 Controller 实例的FXMLLoader.load方法时都会调用initialize,因此会加载main。 fxml 导致 NullPointerException

对两个 fxml 使用不同的 Controller 类:main.fxml 的 Controller 类应包含按钮操作处理程序,而 ElKomponenta.fxml< 的 Controller 类应包含按钮操作处理程序 应该包含与 TableView 相关的内容。

关于JavaFX TableView/Column 空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38683750/

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