在JavaFX TableView中将两个数组添加到两列中

时间:2015-09-16 03:40:29

标签: java javafx

我已使用以下代码成功将一个数组添加到data = FXCollections.observableArrayList(); String[] a = {"a", "b"}; yearColumn.setCellValueFactory(new PropertyValueFactory<test3, String>("Year")); interestColumn.setCellValueFactory(new PropertyValueFactory<test3, String>("Interest")); principalColumn.setCellValueFactory(new PropertyValueFactory<test3, String>("Principal")); balanceColumn.setCellValueFactory(new PropertyValueFactory<test3, String>("Balance")); paymentsAnnual.setItems(data); for (String anA : a) { test3 test31 = new test3(); test31.year.setValue(anA); data.add(test31); } 中的一列:

import javafx.beans.property.SimpleStringProperty;

public class test3 {

    public SimpleStringProperty year = new SimpleStringProperty();
    public SimpleStringProperty interest = new SimpleStringProperty();
    public SimpleStringProperty principal = new SimpleStringProperty();
    public SimpleStringProperty balance = new SimpleStringProperty();

    public String getYear() {
        return year.get();
    }


    public String getInterest() {
        return interest.get();
    }


    public String getPrincipal() {
        return principal.get();
    }


    public String getBalance() {
        return balance.get();
    }

}

test3.java

String[] b = {"hello", "hi"}

现在,当我尝试一次将新数组插入到不同的列时,我遇到了问题。说我有一个数组for (String anA : a) { test3 test31 = new test3(); test31.year.setValue(anA); data.add(test31); } for (String anA1 : b) { test3 test31 = new test3(); test31.balance.setValue(anA1); data.add(test31); } ,然后我使用相同的方法为每个循环添加它,就像这样

a

这会添加数组,但我得到类似这样的输出

Here

有人能告诉我如何将它们加在一起吗?

更新

我应该如何将数组bString[] a = {{"a", "b"},{"hello","hi"}}; for (int i = 1; i < a[0].length; i++){ test3 test31 = new test3(); test31.year.setValue(a[0][i]); test31.balance.setValue(a[1][i]); data.add(test31); } 一起添加,这会产生这样的输出 enter image description here

UPDATE-2

我确实有一种方法可以做到这一点,通过使它成为一个双数组

<div class="selectContainer">
    <select>
      <option>English</option>
      <option>Hindi</option>
      <option>Gujarati</option>
    </select>
   <div class="extraText">Preferred Language</div>
</div>

这样我就可以在正确的行中一次添加内容,如果是单个数组呢?

1 个答案:

答案 0 :(得分:2)

TableView项目列表中的每个项目都代表一行。

您的第一个循环添加了两行,每行都定义了year但没有定义其他属性。

你的第二个循环增加了两行,每行都定义了balance但没有定义其他属性。

您必须修改列表中的现有对象,而不是添加更多行。