有没有办法在javafx中的特定行和列的tableview中插入数据

有没有办法在javafx中的特定行和列的tableview中插入数据,javafx,tableview,Javafx,Tableview,我有5行3列的tableview。我希望在第一行和第一列填写数据。是否有添加数据的方法。请向我显示示例代码。您可以尝试以下方法。从表中获取项目列表,并更新列表中的必需项目。样本如下 public class FxTablePagination extends Application { TableView<Person> table = null; final ObservableList<Person> data = FXCollections.ob

我有5行3列的tableview。我希望在第一行和第一列填写数据。是否有添加数据的方法。请向我显示示例代码。

您可以尝试以下方法。从表中获取项目列表,并更新列表中的必需项目。样本如下

public class FxTablePagination extends Application {

    TableView<Person> table = null;

    final ObservableList<Person> data = FXCollections.observableArrayList(
            new Person("1", "Joe", "Pesci"), new Person("2", "Audrey",
                    "Hepburn"), new Person("3", "Gregory", "Peck"), new Person(
                    "4", "Cary", "Grant"), new Person("5", "De", "Niro"),
            new Person("6", "Katharine", "Hepburn"), new Person("7", "Jack",
                    "Nicholson"), new Person("8", "Morgan", "Freeman"),
            new Person("9", "Elizabeth", "Taylor"), new Person("10",
                    "Marcello", "Mastroianni"), new Person("11", "Innokenty",
                    "Smoktunovsky"), new Person("12", "Sophia", "Loren"),
            new Person("13", "Alexander", "Kalyagin"), new Person("14",
                    "Peter", "OToole"), new Person("15", "Gene", "Wilder"),
            new Person("16", "Evgeny", "Evstegneev"), new Person("17",
                    "Michael", "Caine"), new Person("18", "Jean-Paul",
                    "Belmondo"), new Person("19", " Julia", "Roberts"),
            new Person("20", "James", "Stewart"), new Person("21", "Sandra",
                    "Bullock"), new Person("22", "Paul", "Newman"), new Person(
                    "23", "Oleg", "Tabakov"), new Person("24", "Mary",
                    "Steenburgen"), new Person("25", "Jackie", "Chan"),
            new Person("26", "Rodney", "Dangerfield"), new Person("27",
                    "Betty", "White"), new Person("28", "Eddie", "Murphy"),
            new Person("29", "Amitabh", "Bachchan"), new Person("30", "Nicole",
                    "Kidman"), new Person("31", "Adriano", "Celentano"),
            new Person("32", "Rhonda", " Fleming's"), new Person("32",
                    "Humphrey", "Bogart"));
    private Pagination pagination;

    public static void main(String[] args) throws Exception {
        launch(args);
    }

    public int itemsPerPage() {
        return 1;
    }

    public int rowsPerPage() {
        return 5;
    }

    public VBox createPage(int pageIndex) {
        int lastIndex = 0;
        int displace = data.size() % rowsPerPage();
        if (displace > 0) {
            lastIndex = data.size() / rowsPerPage();
        } else {
            lastIndex = data.size() / rowsPerPage() - 1;

        }

        VBox box = new VBox(5);
        int page = pageIndex * itemsPerPage();

        for (int i = page; i < page + itemsPerPage(); i++) {
            table = new TableView<Person>();
            TableColumn numCol = new TableColumn("ID");
            numCol.setCellValueFactory(new PropertyValueFactory<Person, String>(
                    "num"));

            numCol.setMinWidth(20);

            TableColumn firstNameCol = new TableColumn("First Name");
            firstNameCol
                    .setCellValueFactory(new PropertyValueFactory<Person, String>(
                            "firstName"));

            firstNameCol.setMinWidth(160);

            TableColumn lastNameCol = new TableColumn("Last Name");
            lastNameCol
                    .setCellValueFactory(new PropertyValueFactory<Person, String>(
                            "lastName"));

            lastNameCol.setMinWidth(160);

            table.getColumns().addAll(numCol, firstNameCol, lastNameCol);
            if (lastIndex == pageIndex) {
                table.setItems(FXCollections.observableArrayList(data.subList(
                        pageIndex * rowsPerPage(), pageIndex * rowsPerPage()
                                + displace)));
            } else {
                table.setItems(FXCollections.observableArrayList(data.subList(
                        pageIndex * rowsPerPage(), pageIndex * rowsPerPage()
                                + rowsPerPage())));
            }

            box.getChildren().add(table);
        }
        return box;
    }

    @Override
    public void start(final Stage stage) throws Exception {

        pagination = new Pagination((data.size() / rowsPerPage() + 1), 0);
        // pagination = new Pagination(20 , 0);
        pagination.setStyle("-fx-border-color:red;");
        pagination.setPageFactory(new Callback<Integer, Node>() {
            @Override
            public Node call(Integer pageIndex) {
                if (pageIndex > data.size() / rowsPerPage() + 1) {
                    return null;
                } else {
                    return createPage(pageIndex);
                }
            }
        });

        Button modifyBtn = new Button("Modify");

        **// To update a column content or row content in the table view**
        modifyBtn.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent e) {
                try {
                    ObservableList<Person> columns = table.getItems();
                    Person item = columns.get(0);
                    item.setFirstName("Name modified");
                    columns.add(0, item);
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
            }
        });

        AnchorPane anchor = new AnchorPane();
        AnchorPane.setTopAnchor(pagination, 30.0);
        AnchorPane.setRightAnchor(pagination, 10.0);
        AnchorPane.setBottomAnchor(pagination, 10.0);
        AnchorPane.setLeftAnchor(pagination, 10.0);
        anchor.getChildren().addAll(pagination, modifyBtn);
        Scene scene = new Scene(anchor, 400, 250);
        stage.setScene(scene);
        stage.setTitle("Table pager");
        stage.show();
    }

    public static class Person {

        private final SimpleStringProperty num;
        private final SimpleStringProperty firstName;
        private final SimpleStringProperty lastName;

        private Person(String id, String fName, String lName) {
            this.firstName = new SimpleStringProperty(fName);
            this.lastName = new SimpleStringProperty(lName);
            this.num = new SimpleStringProperty(id);
        }

        public String getFirstName() {
            return firstName.get();
        }

        public void setFirstName(String fName) {
            firstName.set(fName);
        }

        public String getLastName() {
            return lastName.get();
        }

        public void setLastName(String fName) {
            lastName.set(fName);
        }

        public String getNum() {
            return num.get();
        }

        public void setNum(String id) {
            num.set(id);
        }
    }
}
公共类FxTablePagination扩展了应用程序{
TableView table=null;
最终ObservableList数据=FXCollections.observableArrayList(
新人(“1”、“乔”、“佩西”)、新人(“2”、“奥黛丽”,
“赫本”,新人(“3”,“格雷戈里”,“佩克”),新人(
“4”、“卡里”、“格兰特”)、新人(“5”、“德”、“尼罗”),
新人(“6”,“凯瑟琳”,“赫本”),新人(“7”,“杰克”,
“尼科尔森”),新人(“8”、“摩根”、“弗里曼”),
新人(“9”、“伊丽莎白”、“泰勒”)、新人(“10”,
“Marcello”,“Mastroianni”),新人(“11”,“Innokenty”,
“Smoktunovsky”),新人(“12”、“Sophia”、“Loren”),
新人(“13”、“亚历山大”、“卡利亚金”)、新人(“14”,
“彼得”、“耳洞”、新人(“15”、“基因”、“怀尔德”),
新人(“16”、“Evgeny”、“Evstegneev”)、新人(“17”,
“迈克尔”、“凯恩”、新人(“18”、“让·保罗”,
“贝尔蒙多”),新人(“19”、“朱莉娅”、“罗伯茨”),
新人(“20”、“詹姆斯”、“斯图尔特”)、新人(“21”、“桑德拉”,
“布洛克”),新人(“22”,“保罗”,“纽曼”),新人(
“23”,“奥列格”,“塔巴科夫”),新人(“24”,“玛丽”,
“Steenburgen”),新人(“25”、“Jackie”、“Chan”),
新人(“26”、“罗德尼”、“丹格菲尔德”)、新人(“27”,
“贝蒂”、“怀特”、新人(“28”、“埃迪”、“墨菲”),
新人(“29”,“阿弥陀佛”,“巴赫禅”),新人(“30”,“妮可”,
“基德曼”),新人(“31”、“阿德里亚诺”、“塞伦塔诺”),
新人(“32”,“朗达”,“弗莱明”),新人(“32”,
“汉弗莱”、“博加特”);
私有分页分页;
公共静态void main(字符串[]args)引发异常{
发射(args);
}
public int itemsPerPage(){
返回1;
}
public int rowsPerPage(){
返回5;
}
公共VBox createPage(int pageIndex){
int lastIndex=0;
int displace=data.size()%rowsPerPage();
如果(置换>0){
lastIndex=data.size()/rowsPerPage();
}否则{
lastIndex=data.size()/rowsPerPage()-1;
}
VBox框=新的VBox(5);
int page=pageIndex*itemsPerPage();
对于(int i=page;idata.size()/rowsPerPage()+1){
返回null;
}否则{
返回createPage(pageIndex);
}
}
});
按钮modifyBtn=新按钮(“修改”);
**//更新表视图中的列内容或行内容的步骤**
modifyBtn.setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent e){
试一试{
ObservableList columns=table.getItems();
人员项目=列。获取(0);
项目。setFirstName(“名称修改”);
列。添加(0,项);
}捕获(异常e1){
e1.printStackTrace();
}
}
});
锚烷锚=新锚烷();
AnchorPane.setTopAnchor(分页,30.0);
AnchorPane.setRightAnchor(分页,10.0);
锚烷.立根主茎(分页,10.0);
AnchorPane.setLeftAnchor(分页,10.0);
anchor.getChildren().addAll(分页,修改btn);
场景=新场景(锚,400250);
舞台场景;
stage.setTitle(“表格寻呼机”);
stage.show();
}
公共静态类人员{
私有最终SimpleStringProperty num;
私有最终SimpleStringProperty firstNa