Javamail Message[] 到 Javafx TableView

Javamail Message[] into Javafx TableView

我有一个方法可以返回 Java 邮件 Message[]。现在,我将在 javafx table 视图中显示主题字符串、发件人字符串和收入日期。如果我点击 table 中的数据,我将尝试将邮件文本从消息中获取到文本字段中。我不知道如何实现它。

您需要将值分配给 TableView,包括电子邮件,如果需要,您可以隐藏它。然后在 TableView 中创建鼠标事件以获取电子邮件文本并将其设置到 TextField。

public void printTable(TableView<ObservableList> table, String subject, String from, Date date, String email) {

    //Data.
    ObservableList<ObservableList> data = FXCollections.observableArrayList();

    //Columns.
    javafx.scene.control.TableColumn col = new javafx.scene.control.TableColumn();
    col.setText("Subject");
    table.getColumns().addAll(col);

    javafx.scene.control.TableColumn col2 = new javafx.scene.control.TableColumn();
    col.setText("From");
    table.getColumns().addAll(col2);

    javafx.scene.control.TableColumn col3 = new javafx.scene.control.TableColumn();
    col.setText("Date");
    table.getColumns().addAll(col3);

    javafx.scene.control.TableColumn col4 = new javafx.scene.control.TableColumn();
    col.setText("Email");
    table.getColumns().addAll(col4);

    //Row.
    ObservableList<String> row = FXCollections.observableArrayList();

    row.add(subject);
    row.add(from);
    row.add(date.toString());
    row.add(email);

    //Adding the row to the data.
    data.add(row);

    //Setting the data of the table.
    table.setItems(data);

    //Hiding the email column.
    table.getColumns().get(4).setVisible(false);
}

@FXML 
private void tablePressed() {
    if(table.getSelectionModel().getSelectedItem() != null) {
        String message = table.getSelectionModel().getSelectedItem().get(4).toString();
        textField.setText(message);
    }
}