栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在没有中间类的情况下将数据插入JavaFX TableView

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在没有中间类的情况下将数据插入JavaFX TableView

您需要一些东西来保存数据。某些东西(您称为“中间类”)将成为您的的数据类型

TableView

它不必一定是您创建的类,但是如果您仅使用一般性的东西,那么您的代码将很难理解。例如,您可以只使用a

List<String>
来保存每一行:

TableView<List<String>> unitsTableView = new TableView<>();idUnit = new TableColumn<List<String>, String>("Id");idUnit.setCellValueFactory(new Callback<CellDataFeatures<List<String>, String>, Observablevalue<String>>() {    @Override    public Observablevalue<String> call(CellDataFeatures<List<String>, String>> data) {        return new ReadonlyStringWrapper(data.getValue().get(0)) ;    }});shortNameUnit = new TableColumn<List<String>, String>("Short Name");shortNameUnit.setCellValueFactory(new Callback<CellDataFeatures<List<String>, String>, Observablevalue<String>>() {    @Override    public Observablevalue<String> call(CellDataFeatures<List<String>, String>> data) {        return new ReadonlyStringWrapper(data.getValue().get(1)) ;    }});nameUnit = new TableColumn<List<String>, String>("Name");nameUnit.setCellValueFactory(new Callback<CellDataFeatures<List<String>, String>, Observablevalue<String>>() {    @Override    public Observablevalue<String> call(CellDataFeatures<List<String>, String>> data) {        return new ReadonlyStringWrapper(data.getValue().get(2)) ;    }});

然后

public static ObservableList<List<String>> getUnits() {    final ObservableList<List<String>> data = FXCollections.observableArrayList();    if (openConnection()) {        try { rs = st.executeQuery("SELECt * FROM units"); while (rs.next()) {     List<String> unit = new ArrayList<>();     unit.add(rs.getString("id_unit"));     unit.add(rs.getString("short_name"));     unit.add(rs.getString("name"));     data.add(unit); }        } catch (Exception ex) { Logger.getLogger(SQLConnect.class.getName()).log(Level.SEVERE, null, ex);        }    }    closeConnection();    return data;}

但是现在您的代码几乎完全没有您要表示的数据的语义。

请注意

ResultSet
,由于多种原因,您不能直接使用。一种是TableView中的数据由随机访问列表表示。尽管您可以将其
ResultSet
视为代表数据行的列表,但它没有实现
List
接口,并且没有任何随机访问功能(无法保证获得第5行等)。另一个原因是
ResultSet
需要(或至少可能需要,取决于JDBC驱动程序的实现)活动数据库资源。因此,您将有可能在TableView处于作用域的整个时间内锁定数据库表。

为什么要避免创建数据表示形式类?



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/509699.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号