Java—对象的变量定义
我的问题如下:我读取了一个Java—对象的变量定义,java,object,javafx,tableview,Java,Object,Javafx,Tableview,我的问题如下:我读取了一个.csv文件,并将其转换为ArrayList。为了将这个ArrayList放在javafxTableView中,我需要创建一个对象,遍历ObservableList data=FXCollections.observableArrayList(),并根据需要用新对象()填充它。关键是,在我的.csv中,程序每次运行时的列数可能不同,因此对象定义也不同。我不知道如何定义一个对象,它的定义是我的ArrayList长度的函数,并且属性并不总是相同的(我在谷歌上也找不到任何线索
.csv
文件,并将其转换为ArrayList
。为了将这个ArrayList
放在javafxTableView
中,我需要创建一个对象,遍历ObservableList data=FXCollections.observableArrayList()
,并根据需要用新对象()
填充它。关键是,在我的.csv
中,程序每次运行时的列数可能不同,因此对象定义也不同。我不知道如何定义一个对象,它的定义是我的ArrayList
长度的函数,并且属性并不总是相同的(我在谷歌上也找不到任何线索)
要进行说明,请想象以下代码:
public class SettingData extends Application {
public void start(Stage stage) {
TableView<FileData> table = new TableView<FileData>();
final ObservableList<FileData> data = FXCollections.observableArrayList(
new FileData("file1", "D:\\myFiles\\file1.txt", "25 MB", "12/01/2017"),
new FileData("file2", "D:\\myFiles\\file2.txt", "30 MB", "01/11/2019"),
new FileData("file3", "D:\\myFiles\\file3.txt", "50 MB", "12/04/2017"),
new FileData("file4", "D:\\myFiles\\file4.txt", "75 MB", "25/09/2018")
);
TableColumn fileNameCol = new TableColumn("File Name");
fileNameCol.setCellValueFactory(new PropertyValueFactory<>("fileName"));
TableColumn pathCol = new TableColumn("Path");
pathCol.setCellValueFactory(new PropertyValueFactory("path"));
TableColumn sizeCol = new TableColumn("Size");
sizeCol.setCellValueFactory(new PropertyValueFactory("size"));
TableColumn dateCol = new TableColumn("Date Modified");
dateCol.setCellValueFactory(new PropertyValueFactory("dateModified"));
ObservableList<String> list = FXCollections.observableArrayList();
table.setItems(data);
table.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
table.getColumns().addAll(fileNameCol, pathCol, sizeCol, dateCol);
如何实现我的代码来处理这样一个事实:一旦我没有size
列,或者下一次我将有一个author
列。(事实上,我正在处理的文件包含大约80到110列,这就是为什么我需要对我的对象进行“模块化”定义的原因)
这是我在任何论坛上发表的第一篇文章,我不熟悉你的用法,很抱歉。
谢谢你的回答。你是在说lamdasif吗?所以使用:Supplier length Supplier=()->myList.size();但我真的不明白你想要什么。也许您可以提供一些代码您可以检查我添加的内容:)只需用
列表表示每一行
,这样您就有了表视图
。将文件读入可观察列表
,并将其设置为表的项目。在解析文件时,跟踪最长的行,然后创建许多列,如TableColumn
。
public class FileData {
SimpleStringProperty fileName;
SimpleStringProperty path;
SimpleStringProperty size;
SimpleStringProperty dateModified;
FileData(String fileName, String path, String size, String dateModified) {
this.fileName = new SimpleStringProperty(fileName);
this.path = new SimpleStringProperty(path);
this.size = new SimpleStringProperty(size);
this.dateModified = new SimpleStringProperty(dateModified);
}
public String getFileName(){
return fileName.get();
}
public void setFileName(String fname){
fileName.set(fname);
}
public String getPath(){
return path.get();
}
public void setPath(String fpath){
path.set(fpath);
}
public String getSize(){
return size.get();
}
public void setSize(String fsize){
size.set(fsize);
}
public String getDateModified(){
return dateModified.get();
}
public void setModified(String fmodified){
dateModified.set(fmodified);
}
}