【发布时间】:2018-09-19 01:33:02
【问题描述】:
我一直在尝试在 javafx 中创建一个 tableview。出于某种原因,tableview 有正确的列,但没有填充任何数据。 这是我到目前为止所尝试的。 我还尝试过 Eclipse 和 Intellij 上的代码,所以我认为我的编译器或环境没有任何问题。 我在这里先向您的帮助表示感谢。 :)
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.scene.*;
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;
import javafx.scene.control.*;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.collections.*;
public class MainScreen extends Application{
private TableView<Item> table = new TableView<Item>();
private final ObservableList<Item> data =
FXCollections.observableArrayList(new Item("AZZZZ", "3"),new Item("ASD","33"));
public static void main(String args[]) {
launch(args);
}
public void start(Stage stage) {
stage.setTitle("Inventory Management");
FlowPane root = new FlowPane();
table.setEditable(true);
TableColumn<Item,String> nameCol = new TableColumn<>("Name");
TableColumn<Item,String> qtyCol = new TableColumn<>("Quantity");
nameCol.setMinWidth(100);
nameCol.setCellValueFactory(
new PropertyValueFactory<>("name"));
qtyCol.setMinWidth(100);
qtyCol.setCellValueFactory(
new PropertyValueFactory<>("number"));
//data.add(new Item("ZZZ","5"));
table.setItems(data);
table.getColumns().addAll(nameCol,qtyCol);
root.getChildren().addAll(table);
stage.setScene(new Scene(root,300,300));
stage.show();
}
public static class Item{
String name;
String number;
Item(String n,String num){
name=n;
number=num;
}
}
}
}
【问题讨论】:
-
您需要
public获取Item类中的字段,因为PropertyValueFactory依赖它们来检索列的项目。 -
@fabian 应该有一个 my-data-not-showing-in-the-table 的自动关闭功能;)在 OP:请搜索这个站点,有无数个完全相同的问题大约有几个可能的原因。