javafx:如何在TableView中显示String

时间:2015-12-23 21:03:34

标签: java javafx tableview

我想在javafx中的TableView中显示一些字符串,但是当我将它们添加到表格中时,我可以选择它们,这意味着它们被添加但是它会显示字符串,就像它们中的空格一样。

我之前使用过TableView以这种方式显示对象的属性:

repositoriesColumn.setCellValueFactory(new PropertyValueFactory<Student, String>("name"));

在查看之后我会看到这些名字。我知道它是如何运作的。

但这次我有一个ArrayList,没有对象可以使用refelection。只有字符串,我不能得到任何财产显示。我尝试过这样做,但它没有帮助:

repositoriesColumn.setCellValueFactory(new PropertyValueFactory<String, String>("string"));

这是列的声明:

@FXML
public javafx.scene.control.TableColumn repositoriesColumn;

@FXML
public javafx.scene.control.TableColumn ownerColumn;

我无法找到与互联网类似的内容,我该怎么办?

1 个答案:

答案 0 :(得分:8)

我不确定我是否完全理解您的问题,但您可以将字符串包装在属性中并添加它。像这样:

import java.util.ArrayList;
import java.util.Collection;
import javafx.application.Application;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;


public class SampleApp extends Application{

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

    @Override
    public void start(Stage primaryStage) throws Exception {
        Collection<String> list = new ArrayList<>();
        list.add("String1");
        list.add("String2");
        list.add("String3");
        list.add("String4");
        list.add("String5");
        list.add("String6");

        ObservableList<String> details = FXCollections.observableArrayList(list);

        TableView<String> tableView = new TableView<>();
        TableColumn<String, String> col1 = new TableColumn<>();
        tableView.getColumns().addAll(col1);

        col1.setCellValueFactory(data -> new SimpleStringProperty(data.getValue()));
        tableView.setItems(details);

        StackPane sp = new StackPane(tableView);
        Scene scene = new Scene(sp);
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}