本文将为您提供关于如何向JavaFX8TableView添加行和列的详细介绍,我们还将为您解释javafxtableview添加数据的相关知识,同时,我们还将为您提供关于cocoa–如何向NSTabl
本文将为您提供关于如何向JavaFX 8 TableView添加行和列的详细介绍,我们还将为您解释javafx tableview添加数据的相关知识,同时,我们还将为您提供关于cocoa – 如何向NSTableView添加页脚视图?、css – JavaFX 2 TableView标题字体颜色、JavaFX 2.1 TableView刷新项、JavaFx 2用单列创建TableView的实用信息。
本文目录一览:- 如何向JavaFX 8 TableView添加行和列(javafx tableview添加数据)
- cocoa – 如何向NSTableView添加页脚视图?
- css – JavaFX 2 TableView标题字体颜色
- JavaFX 2.1 TableView刷新项
- JavaFx 2用单列创建TableView
如何向JavaFX 8 TableView添加行和列(javafx tableview添加数据)
我在网上看到了一些向TableView添加行的示例,例如使用Oracle文档中的Person类。
但是我的列数是可变的,所以我不能绑定到Person(或任何其他)bean业务对象。
Oracle示例继续显示如何将列绑定到属性名称,但为此,它仅显示如何添加列,而不显示行。
我的问题是,有人可以给我指出一个Hello,World示例,它向JavaFX 8 TableView动态添加任意列和/或行吗?
答案1
小编典典使用List<String>
(例如)作为数据类型,只需将单元格值工厂设置为索引到列表的回调。
例如,这将创建一个TableView<List<String>>
由任意制表符分隔的文本文件构造的。并非文件中的所有行都需要具有相同数量的元素(它将用空格填充)。(它不支持转义的制表符等):
public TableView<List<String>> readTabDelimitedFileIntoTable(Path file) throws IOException { TableView<List<String>> table = new TableView<>(); Files.lines(file).map(line -> line.split("\t")).forEach(values -> { // Add extra columns if necessary: for (int i = table.getColumns().size(); i < values.length; i++) { TableColumn<List<String>, String> col = new TableColumn<>("Column "+(i+1)); col.setMinWidth(80); final int colIndex = i ; col.setCellValueFactory(data -> { List<String> rowValues = data.getValue(); String cellValue ; if (colIndex < rowValues.size()) { cellValue = rowValues.get(colIndex); } else { cellValue = "" ; } return new ReadOnlyStringWrapper(cellValue); }); table.getColumns().add(col); } // add row: table.getItems().add(Arrays.asList(values)); }); return table ;}
cocoa – 如何向NSTableView添加页脚视图?
解决方法
相反,如果您使用基于视图的表,则可以通过数据源执行此操作.
>使用页脚中需要的自定义样式/元素在Interface Builder中向表中添加单元格.给它一个像“TableFooter”这样的标识符>递增(乘以1)NSTableViewDataSource的numberOfRowsInTableView(tableView :)返回的行数>并在最后一行的tableView(tableView:viewForTableColumn:row :)中,使用标识符“TableFooter”从storyboard中实例化该项.
css – JavaFX 2 TableView标题字体颜色
我累了这个:
.table-view .column-header,.table-view .filler { -fx-text-fill: white; -fx-border-width: 0,0; -fx-font-size: 12px; }
这会删除边框,也会更改字体大小,但不会更改字体颜色.
解决方法
.table-view .column-header .label { -fx-text-fill: white; -fx-font-weight: bold; }
JavaFX 2.1 TableView刷新项
我有这个常见的问题,看来是这样。重置项目后,我的表格视图不会刷新我的项目。我检查了数据,这是新的数据。
我尝试了多种互联网解决方案,但没有成功。
无法重置所有列,因为它会额外增加一个空一(不知道为什么),并且调整大小会中断。
我的表不可编辑。新数据已更改。
如果更改项目的顺序并且行更改(:|),则刷新数据。
我只是没有想法。
目前,刷新代码非常简单。
ObservableList<User> data = FXCollections.observableArrayList(User.getResellers());reseller_table.setItems(data);
同样,新数据是正确的。当我对tableView进行选择时,它将返回新的正确Item。
答案1
小编典典我在刷新时也遇到了类似的问题。我的解决方案是将的操作限制在ObservableList
可以正常使用的操作上bind()
。
假设ObservableList obsList
是的基础列表TableView
。
然后,obsList.clear()
(从继承java.util.List<>
)不会TableView正确更新,但是。
同样调用setItem(obsList)
也无法触发刷新…但是…
obsList.removeAll(obsList)
(由覆盖ObservableList
)工作正常,因为它可以正确触发changeEvent。
然后使用全新内容重新填充列表,如下所示:
obsList.removeAll(obsList);
obsList.add(...); //e.g. in a loop...
要么
obsList.removeAll(obsList);
FXCollections.copy(obsList, someSourceList)
JavaFx 2用单列创建TableView
我正在尝试使用以下代码创建具有单个列的表:
TableView<String> table = new TableView<String>();table.getColumns().clear();table.getColumns().add(new TableColumn<String, String>("City Name"));table.setItems(cityList);
但是我得到一个带有“城市名称”列的表,后面是一个空白列
我是JavaFx的新手,所以可能会有更好的方法。
答案1
小编典典我记得以前曾尝试通过不带运气的css属性来“删除”空白列。解决方法是
-设置的首选宽度cityColumn
以手动覆盖整个空间:
TableColumn<String, String> cityColumn = new TableColumn<String, String>("City Name");cityColumn.setPrefWidth(table.getPrefWidth() - 2);
-2
边框宽度。另外,您可以直接将列宽度属性绑定到表宽度属性,从而在调整表宽度大小时会自动更新col宽度。看到这个答案http://codingdict.com/questions/119231。
或者,
-将列调整大小策略设置为CONSTRAINED_RESIZE_POLICY
:
table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
我们今天的关于如何向JavaFX 8 TableView添加行和列和javafx tableview添加数据的分享已经告一段落,感谢您的关注,如果您想了解更多关于cocoa – 如何向NSTableView添加页脚视图?、css – JavaFX 2 TableView标题字体颜色、JavaFX 2.1 TableView刷新项、JavaFx 2用单列创建TableView的相关信息,请在本站查询。
本文标签: