2016-09-07 8 views
-1

私はTableViewを初めて使い、JavaFxでカスタマイズしています。私は多くのチュートリアルを終えましたが、私はいくつか理解していましたが、テーブルに行を追加することに固執しました。 JavaFxに単純な行を追加するtableView

for (int i = 0 ; i <= columnlist.size()-1 ; i++){ 
TableView col = new TableView(columnlist.get(i)); 
Table1.getColumns().add(col); 
} 

が今どのように私はこれに行を追加することができます。 は例えば、私はテーブルには、私は列がArrayListを作成してすることができます私の理解によると Table 1と呼ばれていますか?私は他の例を見てきましたが、あまりにも複雑すぎるので、私に非常に簡単な例を教えていただければ幸いです。

+0

'Table1.getItems()'は、行を追加できる場所です。 – assylias

+0

'TableView'を' TableView'カラムとして使うことはできません。 – fabian

答えて

1

このようにして列を作成することはできません。 TableViewコンストラクタはパラメータとしてObservableListをとりますが、テーブル値、つまりあなたの行を見つけることを期待しています。

各テーブルがデータモデルに多かれ少なかれ結合されているため、テーブルにアイテムを追加する一般的な方法はありません。表示したいクラスがPersonであるとします。

public class Person { 
    private String name; 
    private String surname; 

    public Person(String name, String surname) { 
     this.name = name; 
     this.surname = surname; 
    } 

    public String getName() { 
     return name; 
    } 

    public String getSurname() { 
     return surname; 
    } 
} 

これを行うには、テーブルとその2つの列を作成する必要があります。 PropertyValueFactoryはオブジェクトから必要なデータをフェッチしますが、フィールドには標準の命名規則(getName()getSurname()など)に従ったアクセサーメソッドがあることを確認する必要があります。それ以外の場合は動作しません。

TableView tab = new TableView(); 

TableColumn nameColumn = new TableColumn("Name"); 
nameColumn.setCellValueFactory(new PropertyValueFactory<>("name")); 

TableColumn surnameColumn = new TableColumn("Surname"); 
surnameColumn.setCellValueFactory(new PropertyValueFactory<>("surname")); 

tab.getColumns().addAll(nameColumn, surnameColumn); 

は、今あなたがしなければならないすべてはあなたのPersonオブジェクトを作成し、テーブルの項目に追加することです。

Person person = new Person("John", "Doe"); 
tab.getItems().add(person); 
関連する問題