如何在javafx中读取csv文件时仅显示一个或几个选定的列值
我正在编写一个个人程序,可以读取CSV文件,然后获取该信息并以用户友好的格式显示 所以我的问题是,我如何在JavaFX中以CSV表格格式显示该行的第4、第5、第6列和第10列值 例如,我的CSV表如下所示: 我希望它能显示出这样的东西 monostamp:[值] lat:[价值] 并且该值与其他行相对应 我有在csv中读取并在Tableview中显示所有行和列的代码,但不太确定如何选择要显示的特定列和行如何在javafx中读取csv文件时仅显示一个或几个选定的列值,java,csv,user-interface,javafx,Java,Csv,User Interface,Javafx,我正在编写一个个人程序,可以读取CSV文件,然后获取该信息并以用户友好的格式显示 所以我的问题是,我如何在JavaFX中以CSV表格格式显示该行的第4、第5、第6列和第10列值 例如,我的CSV表如下所示: 我希望它能显示出这样的东西 monostamp:[值] lat:[价值] 并且该值与其他行相对应 我有在csv中读取并在Tableview中显示所有行和列的代码,但不太确定如何选择要显示的特定列和行 package sample; import java.io.BufferedRead
package sample;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import java.lang.String;
public class readCSV extends Application {
public class Record {
//Assume each record have 6 elements, all String
private SimpleStringProperty f1, f2, f3, f4, f5, f6,f7,f8,f9,f10,f11,f12;
public String getF1() {
return f1.get();
}
public String getF2() {
return f2.get();
}
public String getF3() {
return f3.get();
}
public String getF4() {
return f4.get();
}
public String getF5() {
return f5.get();
}
public String getF6() {
return f6.get();
}
public String getF7() {
return f7.get();
}
public String getF8() {
return f8.get();
}
public String getF9() {
return f9.get();
}
public String getF10() {
return f10.get();
}
public String getF11() {
return f11.get();
}
public String getF12() {
return f12.get();
}
Record(String f1, String f2, String f3, String f4,
String f5, String f6,String f7, String f8, String f9, String f10,
String f11, String f12) {
this.f1 = new SimpleStringProperty(f1);
this.f2 = new SimpleStringProperty(f2);
this.f3 = new SimpleStringProperty(f3);
this.f4 = new SimpleStringProperty(f4);
this.f5 = new SimpleStringProperty(f5);
this.f6 = new SimpleStringProperty(f6);
this.f7 = new SimpleStringProperty(f7);
this.f8 = new SimpleStringProperty(f8);
this.f9 = new SimpleStringProperty(f9);
this.f10 = new SimpleStringProperty(f10);
this.f11 = new SimpleStringProperty(f11);
this.f12 = new SimpleStringProperty(f12);
}
}
private final TableView<Record> tableView = new TableView<>();
private final ObservableList<Record> dataList
= FXCollections.observableArrayList();
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("flight logs panel");
Group root = new Group();
TableColumn columnF1 = new TableColumn("f1");
columnF1.setCellValueFactory(
new PropertyValueFactory<>("f1"));
TableColumn columnF2 = new TableColumn("f2");
columnF2.setCellValueFactory(
new PropertyValueFactory<>("f2"));
TableColumn columnF3 = new TableColumn("f3");
columnF3.setCellValueFactory(
new PropertyValueFactory<>("f3"));
TableColumn columnF4 = new TableColumn("f4");
columnF4.setCellValueFactory(
new PropertyValueFactory<>("f4"));
TableColumn columnF5 = new TableColumn("f5");
columnF5.setCellValueFactory(
new PropertyValueFactory<>("f5"));
TableColumn columnF6 = new TableColumn("f6");
columnF6.setCellValueFactory(
new PropertyValueFactory<>("f6"));
TableColumn columnF7 = new TableColumn("f7");
columnF7.setCellValueFactory(
new PropertyValueFactory<>("f7"));
TableColumn columnF8 = new TableColumn("f8");
columnF8.setCellValueFactory(
new PropertyValueFactory<>("f8"));
TableColumn columnF9 = new TableColumn("f9");
columnF9.setCellValueFactory(
new PropertyValueFactory<>("f9"));
TableColumn columnF10 = new TableColumn("f10");
columnF10.setCellValueFactory(
new PropertyValueFactory<>("f10"));
TableColumn columnF11 = new TableColumn("f11");
columnF11.setCellValueFactory(
new PropertyValueFactory<>("f11"));
TableColumn columnF12 = new TableColumn("f12");
columnF12.setCellValueFactory(
new PropertyValueFactory<>("f12"));
tableView.setItems(dataList);
tableView.getColumns().addAll(
columnF1, columnF2, columnF3, columnF4, columnF5, columnF6,
columnF7, columnF8, columnF9, columnF10, columnF11, columnF12);
VBox vBox = new VBox();
vBox.setSpacing(100);
vBox.getChildren().add(tableView);
root.getChildren().add(vBox);
primaryStage.setScene(new Scene(root, 1000, 500));
//primaryStage.show();
readCSV();
}
private void readCSV() {
String CsvFile = "C:\\Users\\Jack Vu\\IdeaProjects\\Flight_panel/flight_log.csv";
String FieldDelimiter = ",";
BufferedReader br;
try {
br = new BufferedReader(new FileReader(CsvFile));
String line;
while ((line = br.readLine()) != null) {
String[] fields = line.split(FieldDelimiter, -1);
Record record = new Record(fields[0], fields[1], fields[2],
fields[3], fields[4], fields[5],fields[6], fields[7], fields[8],
fields[9], fields[10], fields[11]);
dataList.add(record);
}
}
// try {
// br = new BufferedReader(new FileReader(CsvFile));
//
// String line;
// while ((line = br.readLine()) != null) {
// if (line == "monoStamp"){
// System.out.print("here");
// }
//
// }
//
// }
catch (FileNotFoundException ex) {
Logger.getLogger(readCSV.class.getName())
.log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(readCSV.class.getName())
.log(Level.SEVERE, null, ex);
}
}
//
// private void displayColumn(){
// String CsvFile = "C:\\Users\\Jack Vu\\IdeaProjects\\Flight_panel/flight_log.csv";
// String FieldDelimiter = ",";
//
// BufferedReader br;
//
//
//
// }
public static void main(String[] args) {
launch(args);
}
}
包装样品;
导入java.io.BufferedReader;
导入java.io.FileNotFoundException;
导入java.io.FileReader;
导入java.io.IOException;
导入java.util.logging.Level;
导入java.util.logging.Logger;
导入javafx.application.application;
导入javafx.beans.property.SimpleStringProperty;
导入javafx.collections.FXCollections;
导入javafx.collections.ObservableList;
导入javafx.scene.Group;
导入javafx.scene.scene;
导入javafx.scene.control.TableColumn;
导入javafx.scene.control.TableView;
导入javafx.scene.control.cell.PropertyValueFactory;
导入javafx.scene.layout.VBox;
导入javafx.stage.stage;
导入java.lang.String;
公共类readCSV扩展应用程序{
公开课记录{
//假设每条记录有6个元素,全部为字符串
私有SimpleStringProperty f1、f2、f3、f4、f5、f6、f7、f8、f9、f10、f11、f12;
公共字符串getF1(){
返回f1.get();
}
公共字符串getF2(){
返回f2.get();
}
公共字符串getF3(){
返回f3.get();
}
公共字符串getF4(){
返回f4.get();
}
公共字符串getF5(){
返回f5.get();
}
公共字符串getF6(){
返回f6.get();
}
公共字符串getF7(){
返回f7.get();
}
公共字符串getF8(){
返回f8.get();
}
公共字符串getF9(){
返回f9.get();
}
公共字符串getF10(){
返回f10.get();
}
公共字符串getF11(){
返回f11.get();
}
公共字符串getF12(){
返回f12.get();
}
记录(字符串f1、字符串f2、字符串f3、字符串f4、,
字符串f5、字符串f6、字符串f7、字符串f8、字符串f9、字符串f10、,
字符串f11、字符串f12){
this.f1=新的SimpleStringProperty(f1);
this.f2=新的SimpleStringProperty(f2);
this.f3=新的SimpleStringProperty(f3);
this.f4=新的SimpleStringProperty(f4);
this.f5=新的SimpleStringProperty(f5);
this.f6=新的SimpleStringProperty(f6);
this.f7=新的SimpleStringProperty(f7);
this.f8=新的SimpleStringProperty(f8);
this.f9=新的SimpleStringProperty(f9);
this.f10=新的SimpleStringProperty(f10);
this.f11=新的SimpleStringProperty(f11);
this.f12=新的SimpleStringProperty(f12);
}
}
private final TableView TableView=new TableView();
私有最终可观察列表数据列表
=FXCollections.observableArrayList();
@凌驾
公共无效开始(阶段primaryStage){
primaryStage.setTitle(“飞行日志面板”);
组根=新组();
TableColumn columnF1=新的TableColumn(“f1”);
columnF1.setCellValueFactory(
新物业价值工厂(“f1”);
TableColumn columnF2=新的TableColumn(“f2”);
columnF2.setCellValueFactory(
新物业价值工厂(“f2”);
TableColumn columnF3=新的TableColumn(“f3”);
columnF3.setCellValueFactory(
新物业价值工厂(“f3”);
TableColumn columnF4=新的TableColumn(“f4”);
columnF4.setCellValueFactory(
新物业价值工厂(“f4”);
TableColumn columnF5=新的TableColumn(“f5”);
columnF5.setCellValueFactory(
新物业价值工厂(“f5”);
TableColumn columnF6=新的TableColumn(“f6”);
columnF6.setCellValueFactory(
新物业价值工厂(f6);
TableColumn columnF7=新的TableColumn(“f7”);
columnF7.setCellValueFactory(
新物业价值工厂(“f7”);
TableColumn columnF8=新的TableColumn(“f8”);
columnF8.setCellValueFactory(
新物业价值工厂(“f8”);
TableColumn columnF9=新的TableColumn(“f9”);
columnF9.setCellValueFactory(
新物业价值工厂(“f9”);
TableColumn columnF10=新的TableColumn(“f10”);
columnF10.setCellValueFactory(
新物业价值工厂(“f10”);
TableColumn columnF11=新的TableColumn(“f11”);
columnF11.setCellValueFactory(
新物业价值工厂(“f11”);
TableColumn columnF12=新的TableColumn(“f12”);
列F12.setCellValueFactory(
新物业价值工厂(“f12”);
tableView.setItems(数据列表);
tableView.getColumns().addAll(
列F1、列F2、列F3、列F4、列F5、列F6、,
第F7列、第F8列、第F9列、第F10列、第F11列、第F12列);
VBox VBox=新的VBox();
vBox.setspace(100);
vBox.getChildren().add(tableView);
root.getChildren().add(vBox);
原始阶段。设置场景(新场景(根,1000500));
//primaryStage.show();
readCSV();
}
私有void readCSV(){
String CsvFile=“C:\\Users\\Jack Vu\\IdeaProjects\\Flight\u panel/Flight\u log.csv”;
字符串FieldDelimiter=“,”;
缓冲剂;
试一试{
CsvParserSettings parserSettings = new CsvParserSettings();
parserSettings.selectFields("Field A", "Field X", "Field Z");
//also parserSettings.selectIndexes(4, 0, 1);
List<String[]> parsedRows = new CsvParser(parserSettings).parseAll(new File(csvFile));