JavaFX 2:表:更新数据后更新显示

时间:2011-08-30 01:11:41

标签: javafx javafx-2 repaint

这就是我完成回答my last question所需的全部内容。

如果你查看我的上一个问题,你会看到我的班级,其中包含四个字段,对应于我表格​​的四列

public static class ContactOptions {

    private final StringProperty one;
    private final StringProperty two;
    private final StringProperty three;
    private final StringProperty four;

    ContactOptions(String col1, String col2, String col3, String col4) {
        this.one = new StringProperty(col1);
        this.two = new StringProperty(col2);
        this.three = new StringProperty(col3);
        this.four = new StringProperty(col4);
    }

    public String getOne() {
        return one.get();
    }

    public String getTwo() {
        return two.get();
    }

    public String getThree() {
        return three.get();
    }

    public String getFour() {
        return four.get();
    }
}

运行ContactOptions.one.set后,如何让GUI更新?

当我向下滚动并向后滚动时,它会更新。如何在不滚动的情况下更新它。

我也在https://forums.oracle.com/forums/thread.jspa?threadID=2275725

问了这个问题

3 个答案:

答案 0 :(得分:2)

也许您应该使用以下方法之一:

updateTableColumn(TableColumn col) 

更新与此TableCell关联的TableColumn。

updateTableRow(TableRow tableRow) 

更新与此TableCell关联的TableRow。

updateTableView(TableView tv) 

更新与此TableCell关联的TableView。

(来自http://docs.oracle.com/javafx/2.0/api/javafx/scene/control/TableCell.html

但我认为你已经处理过这个问题了)

答案 1 :(得分:2)

要使更新无缝工作,您应该初始化每个属性并添加xxxProperty方法:

private final StringProperty one = new SimpleIntegerProperty();

public StringProperty oneProperty() {
   return one;
}

根据我自己的经验,不要使用upperCase字母使用属性名称,例如“myOne”或“myONE”,因为xxxProperty方法不会运行。

答案 2 :(得分:1)

您使用的是哪种JavaFX 2.0版本?我问的原因是最近表格已更改,我想确保您使用的是最新版本。