2015-09-16 2 views
0

Я успешно добавлен один массив в один столбец в TableView со следующим кодом:Добавление двух массивов в двух столбцах в JavaFX TableView

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); 
    } 

test3.java

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(); 
    } 

} 

Теперь у меня есть проблема когда я пытаюсь вставить новый массив в другой столбец за раз. что у меня есть массив 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); 
     } 

это добавляет массив, но я получаю выходной что-то вроде этого

enter image description here

Может кто-нибудь скажет мне, как добавить их вместе?

UPDATE

Как я должен добавить массив a и b вместе, что дало бы выход, как это enter image description here

ДОПОЛНЕНО-2

У меня есть один из способов сделать это, сделав его двойной массив

String[] 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); 
} 

таким образом я могу добавить содержимое за раз в правильной строке, что, если его единственный массив?

+1

В чем вопрос? Вы хотите, чтобы «привет, привет» в той же строке, что и «a, b»? Если это так, вам нужно сначала получить уже созданные объекты из ваших данных, а затем добавить «привет, привет» на ваши объекты. – NwDev

ответ

2

Каждый элемент в списке элементов TableView представляет одну строку.

Ваш первый цикл добавляет две строки, каждая из которых имеет year, но не имеет других заданных свойств.

Ваш второй цикл добавляет еще две строки, каждая из которых имеет balance, но не имеет других определенных свойств.

Вы должны изменить существующие объекты в своем списке вместо добавления большего количества строк.

Смежные вопросы