JavaFX表显示一个元素,但不显示文本

时间:2016-12-06 18:33:00

标签: java javafx

我对JavaFX非常缺乏经验:

我加载了我的“游戏”视图,并希望填充一张桌子,玩家可以从他当前的房间转到。我从模型中获取数据,将其添加到列表中,将列表添加到表视图中。这之前工作得很好,但现在我遇到了一个问题:

当我运行代码时,表确实显示了一个元素,但没有显示它的名称。我可以选择它(我猜它可以使用它,我没有实现更多)但是缺少名称String。我尝试使用public class GameViewController implements Printable{ private MainApp mainApp; private ObservableList<Room> exitList = FXCollections.observableArrayList(); @FXML private TableView<Room> exitTable; @FXML private TableColumn<Room, String>exitNameColumn; public GameViewController(MainApp mainApp) { this.mainApp=mainApp; } @FXML public void initialize() { update(); } public void update() { for (Room room: mainApp.getGame().getPlayer().getCurrentRoom().getExitList()) { exitList.add(room); } exitTable.setItems(exitList); exitNameColumn.setCellValueFactory(cellData -> cellData.getValue().nameProperty()); exitTable.getColumns().get(0).setVisible(false); exitTable.getColumns().get(0).setVisible(true); } } 技巧来更新表(这在数据发生变化之前强制刷新之前很有用),但它也没有帮助。

    public StringProperty nameProperty() {
    return new SimpleStringProperty(name);
}

{{3}}

PS:该属性的返回方法是:

public class Room 
{

private String name;
private StringProperty nameProperty;
private boolean visible = false;
private HashMap<String, Room> exits;        

public Room(String name) 
{
    this.name = name;
    nameProperty = new SimpleStringProperty(name);
    exits = new HashMap<String, Room>();
}

//other methods

public StringProperty nameProperty() {
    return nameProperty;
}

public ArrayList<Room> getExitList() {
    ArrayList<Room> list = new ArrayList<Room>(exits.values());
    return list;
    }
}

PPS:Room class(将nameProperty作为字段)

{{1}}

0 个答案:

没有答案