如何使用自动创建的列动态填充tableview

时间:2015-05-09 20:27:24

标签: java math javafx

我有以下问题:我创建了一个代码来分隔Euclid算法的每个变量并存储在一个数组或对象中。我想不出一种方法来检索数据并填充tableView,这样,根据MDC(a,b),如果非常大,则会自动添加列。

事实上,它代表了连续分裂的MDC解决方案。我做了一个测试,但我无法运行它。遵循代码。

MDC

    public List<Inteiros_old> listMdc(Inteiros_old inteiros) {


    //List<Integer> lista_resto = new ArrayList<Integer>();

    System.out.println(" Dividendo" + "\t" + " Divisor " + "\t" + " Quociente" + "\t" + "  Resto  ");
    System.out.println("----------" + "\t" + "----------" + "\t" + "----------" + "\t" + "----------");

    int max_inteiros = Math.max(inteiros.getDividendo(), inteiros.getDivisor());
    int min_inteiros = Math.min(inteiros.getDividendo(), inteiros.getDivisor());
    //System.out.println(k + "\t" + m);

    List<Inteiros_old> lista = new ArrayList<Inteiros_old>();

    while( min_inteiros != 0) {

        inteiros.setResto(max_inteiros % min_inteiros);
        inteiros.setQuociente(max_inteiros/min_inteiros);

        System.out.println(max_inteiros + "\t\t " + min_inteiros + "\t\t " + inteiros.getQuociente() + "\t\t" + inteiros.getResto());

        max_inteiros = min_inteiros;
        min_inteiros = inteiros.getResto();

        //lista.add(inteiros.getResto());
    }
    return lista;
}

JavaFX的

public class TabelaDinamica extends Application {

private TableView<Inteiros> table = new TableView<Inteiros>();

private final ObservableList<Inteiros> data = FXCollections.observableArrayList();


public static void main(String[] args) {
    launch(args);
}

@Override
public void start(Stage stage) {
    // -------------------------------------------------------------------------
    Scene scene = new Scene(new Group());
    stage.setTitle("Table View Sample");
    stage.setWidth(300);
    stage.setHeight(500);

    final Label label = new Label("Dynamic Table with autoColumns");
    label.setFont(new Font("Arial", 16));

    table.setEditable(true);

    // -------------------------------------------------------------------------

    int sizeColumns = 4;

    for (int j = 0; j < sizeColumns; j++) {
        data.add(new Inteiros(1,2,3,4));
        String nome = new String("col"+j);
        TableColumn col = new TableColumn();
        col.setMinWidth(100);
        col.setCellValueFactory(
                new PropertyValueFactory<Inteiros, String>(nome));          

        //table.getColumns().add(j, col);
        table.setItems(data);
        table.getColumns().addAll(col);

    }

    // -------------------------------------------------------------------------
    final VBox vbox = new VBox();
    vbox.setSpacing(5);
    vbox.setPadding(new Insets(10, 0, 0, 10));
    vbox.getChildren().addAll(label, table);

    ((Group) scene.getRoot()).getChildren().addAll(vbox);

    // -------------------------------------------------------------------------

    stage.setScene(scene);
    stage.show();
}

}

public class Inteiros {

private SimpleIntegerProperty dividendo; //dividen
private SimpleIntegerProperty divisor; //divisor
private SimpleIntegerProperty quociente; //quotient
private SimpleIntegerProperty resto; //rest


  Inteiros(Integer dividendo, Integer divisor, Integer quociente, Integer resto) {
        this.dividendo = new SimpleIntegerProperty(dividendo);
        this.divisor = new SimpleIntegerProperty(divisor);
        this.quociente = new SimpleIntegerProperty(quociente);
        this.resto = new SimpleIntegerProperty(resto);
    }


public Integer getDividendo() {
    return dividendo.get();
}
public void setDividendo(Integer int_num) {
    dividendo.set(int_num);
}


public Integer getDivisor() {
    return divisor.get();
}
public void setDivisor(Integer int_num) {
    divisor.set(int_num);
}

public Integer getQuociente() {
    return quociente.get();
}
public void setQuociente(Integer int_num) {
    quociente.set(int_num);
}


public Integer resto() {
    return resto.get();
}
public void setResto(Integer int_num) {
    resto.set(int_num);
}

1 个答案:

答案 0 :(得分:0)

试试这个

String[] nome = {"dividendo", "divisor", "quociente", "resto"}
int sizeColumns = 4;

for (int j = 0; j < sizeColumns; j++) {
    data.add(new Inteiros(1,2,3,4));
    TableColumn col = new TableColumn();
    col.setMinWidth(100);
    col.setCellValueFactory(new PropertyValueFactory<Inteiros, String>(nome[j]));          
    table.getColumns().addAll(col);
}
table.setItems(data);

因为String nome的值必须与变量的名称匹配