2017-05-27 4 views
1

私は学生の会計出席のためのプログラムを開発しています。私は最初の列を持つテーブルが必要です - 学生のリスト(TableColumn)と動的に生成する次の列(講義のリスト)。行と列の交差点 - ComboBox 1つのタイプ(TableView >>)の列を動的に生成する方法を見つけましたが、私の場合の解決策は見つかりませんでした。 私は、追加のクラス異なるタイプの動的に生成された列でテーブルビューを作成するにはどうすればよいですか?

class Row{ 
    StringProperty audience; 
    ObservableList<Attendence> lectures; 
} 

を作成するためのアイデアを持っていたが、それを実装する方法を理解していません。 この問題を解決するにはどうすればいいですか?

答えて

2

あなたのアイデアは、基本的に正しいものである:

public class Row{ 
    private final StringProperty audience = new SimpleStringProperty(); 
    private final List<ObjectProperty<Attendance>> lectures = new ArrayList<>(); 

    public Row(String audience, int numAttendances) { 
     setAudience(audience); 
     for (int i = 0 ; i < numAttendances ; i++) { 
      lectures.add(new SimpleObjectProperty<>()); 
     } 
    } 

    public List<ObjectProperty<Attendance>> getLectures() { 
     return lectures ; 
    } 

    public StringProperty audienceProperty() { 
     return audience ; 
    } 

    public final String getAudience() { 
     return audienceProperty().get(); 
    } 

    public final void setAudience(String audience) { 
     audienceProperty().set(audience); 
    } 
} 

次のように今、あなたはあなたのテーブルを設定することができます。

int numLectures = ... ; 
TableView<Row> table = new TableView<>(); 
TableColumn<Row, String> audienceCol = new TableColumn<>("Audience"); 
audienceCol.setCellValueFactory(cellData -> cellData.getValue().audienceProperty()); 
table.getColumns().add(audienceCol); 
for (int i = 0 ; i < numLectures ; i++) { 
    TableColumn<Row, Attendance> col = new TableColumn<>("Attendance "+ (i+1)); 
    final int colIndex = i ; 
    col.setCellValueFactory(cellData -> cellData.getValue().getLectures().get(colIndex)); 
    table.getColumns().add(col); 
} 
+0

感謝を!今試してみてください。 –

関連する問題