2016-05-28 4 views
0

私のプロジェクトでは、JavaFX GUIのTablevieに100個以上のカラムを追加する必要があります。各列には特定の名前を付ける必要があります。データをソートしなければなりません。また、時には列が空の場合もあります。これはデータに依存します。データを含めるには、列の名前を知る必要があります。JavaFX Tableviewに100個以上の名前付きカラムを追加する簡単な方法

要するに、多くのデータをTablevieの100個以上の列にソートする必要があります。

TableviewはScenebuilderで作成され、現時点では空です。

答えて

0

あなたの質問には、あなたのケースに固有の多くの情報はありませんが、私はあなたに物事を行う一般的な方法を与えるために全力を尽くします。あなたのニーズに応じて、それを変更する必要があるかもしれません。

明らかに、この量のデータを扱うのは面倒です。テーブルビューでは100以上の列を表示することは良い解決策のようには見えません。何もしなくても水平オーバーフローが発生します。スクロールせずにしかし、私はこれがあなたが認識していることであり、あなたの実装に必要であると仮定しています。

場合は、あなたが、私はそれについて、この道を行くだろう、列がどうなるか手を前に知っていることがある場合:あなたのテーブルビューに表示するデータを格納する方法として、データコンテナクラスを作成する

ファースト。

ArrayList<DataContainer> data; 

//Depends on how you receive your data. 
foreach(InputData dataObject in recievedData) 
{ 
    DataContainer newDataContainer = new DataContainer(dataObject.dataValue1, 
                 dataObject.dataValue2, 
                 //And so on. 
                 ); 
    data.add(newDataContainer); 
} 

ObservableList<DataContainer> observableData = FXCollections.observabaleArrayList<DataContainer>(data); 

最後に、あなたのテーブルビュー内のすべてのカラムを作成し、データを割り当てる:あなたがデータを受信し、それはあなた次第明らかであるが、このようになります並べ替える方法

public class DataContainer 
{ 
    private String dataValue1; 
    private String dataValue2; 
    // Repeat for all the data you need represented. 

    public DataContainer(String dataValue1, 
         String dataValue2, 
         //And so on.) 
    { 
     this.dataValue1 = dataValue1; 
     this.dataValue2 = dataValue2; 
     //And so on. 
    } 

    public String getDataValue1() 
    { 
     return this.dataValue1; 
    } 

    public String setDataValue1(String value) 
    { 
     this.dataValue1 = value; 
    } 

    public String getDataValue2() 
    { 
     return this.dataValue1; 
    } 

    public String setDataValue2(String value) 
    { 
     this.dataValue2 = value; 
    } 

    //Repeat for all data. 
} 

。おそらくアルゴリズムでこれを行うことができます。たぶん各列を個別に指定する必要があります。実装によって異なります。

TableColumn value1 = new TableColumn("Value 1"); 
firstNameCol.setCellValueFactory(new PropertyValueFactory<DataContainer, String>("dataValue1")); //The string corresponds to the member name of that dataValue in the DataContainer class. 
TableColumn value2 = new TableColumn("Value 2"); 
firstNameCol.setCellValueFactory(new PropertyValueFactory<DataContainer, String>("dataValue2")); //The string corresponds to the member name of that dataValue in the DataContainer class. 

table.setItems(observableData); 
table.getColumns().addAll(value1, value2); //For all columns. 

私はあなたの質問を誤解しますが、追加の読み取りのためにあなたが公式のチュートリアルまで見たいと思うかもしれません場合、私はごめんなさい:http://docs.oracle.com/javafx/2/ui_controls/table-view.htm

、動的にテーブルビュー内の列を割り当て、この前の回答を。 javafx 2- tableview dynamic column

最高の運があります。

+0

hmmそれは努力が価値がないことを縫う、あなたの努力に感謝します。たぶん私はこれを試してみるだろうが、あなたの反対は正しかった。おそらく私はそれを変えるだろう。 – Dusius

関連する問題