广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 软件教程 > Java技术 > 正文

惠州如何将数据映射添加到JavaFX表中?_北大青鸟IT学校

作者:邓华发布时间:2021-05-20分类:Java技术浏览:1144


导读:如何将数据映射添加到JavaFX表中?这是大家在学习Java的过程都会遇到的问题,那么下面我们一起来看看惠州北大青鸟学术部老师是怎么解答的。

如何将数据映射添加到JavaFX表中?这是大家在学习Java的过程都会遇到的问题,那么下面我们一起来看看惠州北大青鸟学术部老师是怎么解答的。

我们可以使用 MapValueFactory 类将 Map 数据添加到表中。


/*

 * Copyright (c) 2008, 2014, Oracle and/or its affiliates.

 * All rights reserved. Use is subject to license terms.

 *

 * This file is available and licensed under the following license:

 *

 * Redistribution and use in source and binary forms, with or without

 * modification, are permitted provided that the following conditions

 * are met:

 *

 *  - Redistributions of source code must retain the above copyright

 *    notice, this list of conditions and the following disclaimer.

 *  - Redistributions in binary form must reproduce the above copyright

 *    notice, this list of conditions and the following disclaimer in

 *    the documentation and/or other materials provided with the distribution.

 *  - Neither the name of Oracle nor the names of its

 *    contributors may be used to endorse or promote products derived

 *    from this software without specific prior written permission.

 *

 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS

 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT

 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR

 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT

 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,

 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT

 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,

 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY

 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT

 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE

 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

 */

import java.util.HashMap;

import java.util.Map;

import javafx.application.Application;

import javafx.collections.FXCollections;

import javafx.collections.ObservableList;

import javafx.geometry.Insets;

import javafx.scene.Group;

import javafx.scene.Scene;

import javafx.scene.control.Label;

import javafx.scene.control.TableCell;

import javafx.scene.control.TableColumn;

import javafx.scene.control.TableView;

import javafx.scene.control.cell.MapValueFactory;

import javafx.scene.control.cell.TextFieldTableCell;

import javafx.scene.layout.VBox;

import javafx.scene.text.Font;

import javafx.stage.Stage;

import javafx.util.Callback;

import javafx.util.StringConverter;

 

public class Main extends Application {

 

    public static final String Column1MapKey = "A";

    public static final String Column2MapKey = "B";

 

    public static void main(String[] args) {

        launch(args);

    }

 

    @Override

    public void start(Stage stage) {

        Scene scene = new Scene(new Group());

        stage.setTitle("Table View Sample");

        stage.setWidth(300);

        stage.setHeight(500);

        

        final Label label = new Label("Student IDs");

        label.setFont(new Font("Arial", 20));

 

        TableColumn<Map, String> firstDataColumn = new TableColumn<>("Class A");

        TableColumn<Map, String> secondDataColumn = new TableColumn<>("Class B");

 

        firstDataColumn.setCellValueFactory(new MapValueFactory(Column1MapKey));

        firstDataColumn.setMinWidth(130);

        secondDataColumn.setCellValueFactory(new MapValueFactory(Column2MapKey));

        secondDataColumn.setMinWidth(130);

 

        TableView tableView = new TableView<>(generateDataInMap());

 

        tableView.setEditable(true);

        tableView.getSelectionModel().setCellSelectionEnabled(true);

        tableView.getColumns().setAll(firstDataColumn, secondDataColumn);

        Callback<TableColumn<Map, String>, TableCell<Map, String>>

            cellFactoryForMap = (TableColumn<Map, String> p) -> 

                new TextFieldTableCell(new StringConverter() {

                    @Override

                        public String toString(Object t) {

                        return t.toString();

                    }

                    @Override

                    public Object fromString(String string) {

                        return string;

                    }

            });

        firstDataColumn.setCellFactory(cellFactoryForMap);

        secondDataColumn.setCellFactory(cellFactoryForMap);

 

        final VBox vbox = new VBox();

 

        vbox.setSpacing(5);

        vbox.setPadding(new Insets(10, 0, 0, 10));

        vbox.getChildren().addAll(label, tableView);

 

        ((Group) scene.getRoot()).getChildren().addAll(vbox);

 

        stage.setScene(scene);

 

        stage.show();

    }

 

    private ObservableList<Map> generateDataInMap() {

        int max = 10;

        ObservableList<Map> allData = FXCollections.observableArrayList();

        for (int i = 1; i < max; i++) {

            Map<String, String> dataRow = new HashMap<>();

 

            String value1 = "A" + i;

            String value2 = "B" + i;

 

            dataRow.put(Column1MapKey, value1);

            dataRow.put(Column2MapKey, value2);

 

            allData.add(dataRow);

        }

        return allData;

    }

}

上面的代码生成以下结果。

JavaFX表视图7.png

想知道更多关于Java的资讯,联系在线客服,或者来惠州北大青鸟新方舟校区了解了解。

标签:惠州计算机JAVA软件开发惠州计算机Java软件开发惠州计算机JAVA培训惠州计算机JAVA软件开发学校惠州计算机Java软件开发培训JAVAJava软件开发北大青鸟IT计算机学校北大青鸟IT软件学校北大青鸟IT学校


Java技术排行
标签列表
网站分类
文章归档
最近发表