【问题标题】:javafx : how to show String in TableViewjavafx:如何在 TableView 中显示字符串
【发布时间】:2016-03-30 08:39:26
【问题描述】:

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

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

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

在查看之后,我会看到名称。我知道它是如何工作的。

但是这次我有一个 ArrayList 并且没有对象可以使用 refelection 。只有字符串,我无法获得任何要显示的属性。我试过这样做,但没有帮助:

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

这里是列的 declatations :

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

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

我在网上找不到类似的东西,我该怎么办?

【问题讨论】:

    标签: java javafx tableview


    【解决方案1】:

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

    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();
        }
    }
    

    【讨论】:

    • 感谢您的回答。我做了上述但我得到以下错误:错误:(146、98)java:找不到符号符号:方法getValue()位置:java.lang.Object类型的变量数据
    • 你能发布你的代码是什么吗?上面的代码确实有效,并提供了表中的值列表。你有代码的 Lambda 部分吗? “data ->” - 你试过运行这个例子吗?如果您尝试按原样运行它,能否提供堆栈跟踪?
    • getValue() 方法是否仍然可用?我的 IDE 无法解析该方法
    • 这不回答原问题,求两栏帮助
    猜你喜欢
    • 2018-03-27
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    • 2023-03-29
    • 2020-03-11
    相关资源
    最近更新 更多