如何在JavaFx中添加新数据后刷新tableview

时间:2018-01-16 13:19:41

标签: tableview javafx-8 auto-update

我目前正在研究JAVA FX应用程序,以从JIRA REST API获取用户的信息。我想要一个刷新按钮,点击它时,必须使用新添加的数据显示表格视图 请看一下代码。 我的POJO课程 公共课问题{

private String jiraKey;
private String jiraSummary;
private String jiraPriority;
private String jiraAssignee;
private String jiraIssueType;
private Hyperlink hyperLink;
private String loghours;
private String commentLogHours;

public Issues(String jiraKey, String jiraSummary, String jiraPriority, String jiraAssignee, String jiraIssueType) {
    super();
    this.hyperLink = new Hyperlink(jiraKey);
    this.jiraSummary = jiraSummary;
    this.jiraPriority = jiraPriority;
    this.jiraAssignee = jiraAssignee;
    this.jiraIssueType = jiraIssueType;
    this.hyperLink = hyperLink;
    this.loghours = loghours;
    this.commentLogHours = commentLogHours;
}

public String getJiraKey() {
    return jiraKey;
}

public void setJiraKey(String jiraKey) {
    this.jiraKey = jiraKey;
}

//getters and setters

}

我的Observable list方法,用于将数据填充到表

Class ABC{
       public ObservableList<Issues> issueJsonList(){
        // A processed arraylist 
        ObservableList<Issues> data = FXCollections.observableList(list);
        return data;
      }
   }

这是我的tableview代码。

@SuppressWarnings({ "unchecked", "rawtypes" })
    public TableView<Issues> initTable() throws IOException, URISyntaxException {
        TableView<Issues> table = new TableView<Issues>();
        table.setEditable(true);
        TableColumn<Issues, Hyperlink> jiraKey = new TableColumn<>(keyField);
        jiraKey.setCellValueFactory(new PropertyValueFactory("hyperLink"));
        jiraKey.setCellFactory(new HyperlinkCell());
        TableColumn jiraPriority = new TableColumn(priorityField);
        TableColumn jiraIssueType = new TableColumn(issueTypeField);
        TableColumn jiraSummary = new TableColumn(summaryField);
        TableColumn jiraAssignee = new TableColumn(assigneeField);
        TableColumn workLogCol = new TableColumn(workLogField);
        TableColumn timeSpent = new TableColumn(timeSpentField);
        TableColumn commentTimeLog = new TableColumn(commentField);
        workLogCol.getColumns().addAll(timeSpent, commentTimeLog);
        jiraSummary.setCellValueFactory(new PropertyValueFactory("jiraSummary"));
        jiraIssueType.setCellValueFactory(new PropertyValueFactory("jiraIssueType"));
        jiraPriority.setCellValueFactory(new PropertyValueFactory("jiraPriority"));
        jiraAssignee.setCellValueFactory(new PropertyValueFactory("jiraAssignee"));
        timeSpent.setCellValueFactory(new PropertyValueFactory("getTimeSpent"));
        timeSpent.setCellFactory(TextFieldTableCell.forTableColumn());
        commentTimeLog.setCellValueFactory(new PropertyValueFactory("getComment"));
        commentTimeLog.setCellFactory(TextFieldTableCell.forTableColumn());
        timeSpent.setOnEditCommit(new EventHandler<CellEditEvent<JiraAuth, String>>() {
            public void handle(CellEditEvent<JiraAuth, String> t) {
                JiraAuth.setTimeSpent(t.getNewValue());
            }
        });
        commentTimeLog.setCellFactory(TextFieldTableCell.forTableColumn());
        commentTimeLog.setOnEditCommit(new EventHandler<CellEditEvent<JiraAuth, String>>() {
            public void handle(CellEditEvent<JiraAuth, String> t) {
                JiraAuth.setWorkLogComment(t.getNewValue());
                int i = t.getTablePosition().getRow();
                String abc = table.getColumns().get(0).getCellData(i).toString();
                String finalStr = abc.substring(abc.indexOf("]") + 1);
                JiraAuth.setWorkLogJiraKey(finalStr);
            }
        });
        table.getColumns().setAll(jiraKey, jiraSummary, jiraPriority, jiraAssignee, jiraIssueType);
        IssuesJsonParser issueObject = new IssuesJsonParser();
        ObservableList<Issues> data = issueObject.issueJsonList();
        table.setItems(data);
        table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
        return table;
    }

调用刷新按钮时,

buttons[0] = new Button("Refresh");
buttons[0].setOnAction(event->{
initTable().refresh();
});
没有任何反应。请帮忙!!

0 个答案:

没有答案