如何处理 table 视图中具有嵌套 Header 的信息?
How treat information in table view that have Nested Header?
我想在具有嵌套 Header 的 table 视图中设置信息,就像 Excel table 一样。但是我花了几个小时没有得到任何可以帮助我的东西
我需要的结果是这样的:
但目前看起来像这样:
我的代码设置信息在table:
JourSuivi j1=new JourSuivi(1, "30/04/2016", 23, 34, new ArrayList<>(), 43, new ArrayList<>(), 345, 23, 2, new ArrayList<>(), 11);
JourSuivi j2=new JourSuivi(1, "30/04/2016", 23, 34, new ArrayList<>(), 43, new ArrayList<>(), 345, 23, 2, new ArrayList<>(), 11);
List<Tonnage>ls=new ArrayList<>();
ls.add(new Tonnage(ls_ton,"ONCF",33));
j1.setNbWgs(ls);j2.setNbWgs(ls);
List<Double> ls_d=new ArrayList<>();
ls_d.add(12.33);ls_d.add(44.2);
j2.setTocpSA(ls_d);j1.setToncf(ls_d);j1.setToncf(ls_d);j2.setToncf(ls_d);
ObservableList<JourSuivi> data=FXCollections.observableArrayList(j1,j2);
table.getColumns().addAll(datecol, expeditionCol,numTrainCol,nWgsCol,totalcol,toncf,totaloncf,nTraincol,tocp,cumul);
controller.getHb().getChildren().add(table);
//chargement des données
table.setItems(data);
我不认为我真的理解这个问题,但这可能会有所帮助:
@FXML
TableView<String> tblView; // your table view here
TableColumn<String, String> columnMain = new TableColumn<>();
columnMain.setCellValueFactory(new PropertyValueFactory<>("someValue"));
columnMain.setText("some text");
TableColumn<String, String> columnChild1 = new TableColumn<>();
columnChild1 .setCellValueFactory(new PropertyValueFactory<>("someValue"));
columnChild1 .setText("some text");
TableColumn<String, String> columnChild2 = new TableColumn<>();
columnChild2 .setCellValueFactory(new PropertyValueFactory<>("someValue"));
columnChild2 .setText("some text");
columnMain.getColumns().add(columnChild1);
columnMain.getColumns().add(columnChild2);
// columnMain now has two child columns columnChild1 and columnChild2
tblView.getColumns().add(columnMain);
如果你想访问 columnChild1 :
tblView.getColumns().get(0).getColumns().get(0);
如果您想访问 columnChild2:
tblView.getColumns().get(0).getColumns().get(1);
编辑:
如果你想用数据填充 table,这对我来说是最好的方法 -> 创建一个 class 来填充 table,例如:
table :
@FXML
TableView<Person> tblView;
TableColumn<String, String> columnMain = new TableColumn<>();
columnMain.setText("Name");
TableColumn<String, String> columnChild1 = new TableColumn<>();
columnChild1 .setCellValueFactory(new PropertyValueFactory<>("firstName"));
columnChild1 .setText("First Name");
TableColumn<String, String> columnChild2 = new TableColumn<>();
columnChild2 .setCellValueFactory(new PropertyValueFactory<>("lastName"));
columnChild2 .setText("Last Name");
columnMain.getColumns().add(columnChild1);
columnMain.getColumns().add(columnChild2);
// columnMain now has two child columns columnChild1 and columnChild2
tblView.getColumns().add(columnMain);
和对象:
public class Person{
String firstName;
String lastName;
public Person(String firstName,String lastName){
this.firstName=firstName;
this.lastName=lastName;
}
}
填写table:
ArrayList<Person> tableData = new ArrayList<>();
tableData.add(new Person("Elhassani","Ayoub"));
tableData.add(new Person("Abdullah","Asendar"));
tblView.getitems().addAll(tableData);
我想在具有嵌套 Header 的 table 视图中设置信息,就像 Excel table 一样。但是我花了几个小时没有得到任何可以帮助我的东西
我需要的结果是这样的:
但目前看起来像这样:
我的代码设置信息在table:
JourSuivi j1=new JourSuivi(1, "30/04/2016", 23, 34, new ArrayList<>(), 43, new ArrayList<>(), 345, 23, 2, new ArrayList<>(), 11);
JourSuivi j2=new JourSuivi(1, "30/04/2016", 23, 34, new ArrayList<>(), 43, new ArrayList<>(), 345, 23, 2, new ArrayList<>(), 11);
List<Tonnage>ls=new ArrayList<>();
ls.add(new Tonnage(ls_ton,"ONCF",33));
j1.setNbWgs(ls);j2.setNbWgs(ls);
List<Double> ls_d=new ArrayList<>();
ls_d.add(12.33);ls_d.add(44.2);
j2.setTocpSA(ls_d);j1.setToncf(ls_d);j1.setToncf(ls_d);j2.setToncf(ls_d);
ObservableList<JourSuivi> data=FXCollections.observableArrayList(j1,j2);
table.getColumns().addAll(datecol, expeditionCol,numTrainCol,nWgsCol,totalcol,toncf,totaloncf,nTraincol,tocp,cumul);
controller.getHb().getChildren().add(table);
//chargement des données
table.setItems(data);
我不认为我真的理解这个问题,但这可能会有所帮助:
@FXML
TableView<String> tblView; // your table view here
TableColumn<String, String> columnMain = new TableColumn<>();
columnMain.setCellValueFactory(new PropertyValueFactory<>("someValue"));
columnMain.setText("some text");
TableColumn<String, String> columnChild1 = new TableColumn<>();
columnChild1 .setCellValueFactory(new PropertyValueFactory<>("someValue"));
columnChild1 .setText("some text");
TableColumn<String, String> columnChild2 = new TableColumn<>();
columnChild2 .setCellValueFactory(new PropertyValueFactory<>("someValue"));
columnChild2 .setText("some text");
columnMain.getColumns().add(columnChild1);
columnMain.getColumns().add(columnChild2);
// columnMain now has two child columns columnChild1 and columnChild2
tblView.getColumns().add(columnMain);
如果你想访问 columnChild1 :
tblView.getColumns().get(0).getColumns().get(0);
如果您想访问 columnChild2:
tblView.getColumns().get(0).getColumns().get(1);
编辑:
如果你想用数据填充 table,这对我来说是最好的方法 -> 创建一个 class 来填充 table,例如:
table :
@FXML
TableView<Person> tblView;
TableColumn<String, String> columnMain = new TableColumn<>();
columnMain.setText("Name");
TableColumn<String, String> columnChild1 = new TableColumn<>();
columnChild1 .setCellValueFactory(new PropertyValueFactory<>("firstName"));
columnChild1 .setText("First Name");
TableColumn<String, String> columnChild2 = new TableColumn<>();
columnChild2 .setCellValueFactory(new PropertyValueFactory<>("lastName"));
columnChild2 .setText("Last Name");
columnMain.getColumns().add(columnChild1);
columnMain.getColumns().add(columnChild2);
// columnMain now has two child columns columnChild1 and columnChild2
tblView.getColumns().add(columnMain);
和对象:
public class Person{
String firstName;
String lastName;
public Person(String firstName,String lastName){
this.firstName=firstName;
this.lastName=lastName;
}
}
填写table:
ArrayList<Person> tableData = new ArrayList<>();
tableData.add(new Person("Elhassani","Ayoub"));
tableData.add(new Person("Abdullah","Asendar"));
tblView.getitems().addAll(tableData);