如何处理 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);