gpt4 book ai didi

java - TableView 静态时不显示列

转载 作者:太空宇宙 更新时间:2023-11-04 12:57:38 33 4
gpt4 key购买 nike

我对 JavaFX 中的 TableView 元素有疑问。

当我尝试使用它并向其中添加列时,它工作正常,但如果我将其设置为静态(需要从另一个阶段访问它),则列根本不会出现。

我的代码如下所示(摘录):

@FXML
private static TableView<Datensatz> table = new TableView();

@Override
public void initialize(URL url, ResourceBundle rb) {
erstelleTabelle();
}

private static void erstelleTabelle() {
TableColumn nameColumn = new TableColumn("Name");
nameColumn.setCellValueFactory(new PropertyValueFactory<>("Name"));

TableColumn handyNrColumn = new TableColumn("Handynummer");
handyNrColumn.setCellValueFactory(new PropertyValueFactory<>("Handynummer"));

TableColumn rechnungsDatumColumn = new TableColumn("Rechnungsdatum");
rechnungsDatumColumn.setCellValueFactory(new PropertyValueFactory<>("Rechnungsdatum"));

TableColumn abrechnungsBeginnColumn = new TableColumn("Abrechnungsbeginn");
abrechnungsBeginnColumn.setCellValueFactory(new PropertyValueFactory<>("Von"));

TableColumn abrechnungsEndeColumn = new TableColumn("Abrechnungsende");
abrechnungsEndeColumn.setCellValueFactory(new PropertyValueFactory<>("Bis"));

TableColumn rechnungsnummerColumn = new TableColumn("Rechnungsnummer");
rechnungsnummerColumn.setCellValueFactory(new PropertyValueFactory<>("Rechnungsnummer"));

TableColumn betragColumn = new TableColumn("Betrag");
betragColumn.setCellValueFactory(new PropertyValueFactory<>("Betrag"));

TableColumn kostenstelleColumn = new TableColumn("Kostenstelle");
kostenstelleColumn.setCellValueFactory(new PropertyValueFactory<> ("Kostenstelle"));

TableColumn telefonKostenColumn = new TableColumn("Telefon-Kosten");
telefonKostenColumn.setCellValueFactory(new PropertyValueFactory<>("telefon"));

TableColumn smsKostenColumn = new TableColumn("SMS-Kosten");
smsKostenColumn.setCellValueFactory(new PropertyValueFactory<>("sms"));

TableColumn internetKostenColumn = new TableColumn("Internet-Kosten");
internetKostenColumn.setCellValueFactory(new PropertyValueFactory<>("internet"));

TableColumn vertragsDetailsColumn = new TableColumn("Vertragsdetails");
vertragsDetailsColumn.setCellValueFactory(new PropertyValueFactory<>("details"));
vertragsDetailsColumn.setMinWidth(100);

table.getColumns().addAll(
nameColumn,
handyNrColumn,
rechnungsDatumColumn,
abrechnungsBeginnColumn,
abrechnungsEndeColumn,
rechnungsnummerColumn,
betragColumn,
kostenstelleColumn,
telefonKostenColumn,
smsKostenColumn,
internetKostenColumn,
vertragsDetailsColumn);

}

public static void setTable(ObservableList datensatz) {
table.setItems(datensatz);
}

因此,当我将所有静态方法/变量更改为非静态方法/变量时,一切都工作正常。

有人知道我可以尝试做什么吗?谢谢!

最佳答案

您的问题是您的静态变量与您在 UI 中看到的 TableView 不同 - FXMLLoader 只能注入(inject)实例成员,而不能注入(inject)静态成员。无论如何,将 UI 元素作为静态成员并不是一个好的设计,因为无论如何它只能在应用程序场景图中出现一次。

TableView 成员更改回非静态成员,不要初始化它(FXMLLoader 将在 UI 中注入(inject)实际控件,假设它具有正确的 fx:id 属性)。要从另一个 Controller 访问它,请参阅 this question

关于java - TableView 静态时不显示列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35230438/

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