将字符串行添加到JAVA FX中的TableView

Mxs*_*sky 0 java javafx javafx-8

我找不到一种方法来向我的tableView添加一个简单的"String"行.实际上我可以添加一行,但其内容不可见 ......

这是我的代码:

@FXML
private TableView<String> table; 

@FXML
private TableColumn<String, String> table2;

public ObservableList<String> getLanes()
{
    ObservableList<String> lanes=FXCollections.observableArrayList();
    lanes.add("TEST");

    return lanes;
}
Run Code Online (Sandbox Code Playgroud)

然后:

table.setItems(getLanes()); //Not working
Run Code Online (Sandbox Code Playgroud)

table.getItems().add("TEST"); //Not working
Run Code Online (Sandbox Code Playgroud)

但没有成功.我读的是以及其他单证,但它并没有帮助我做这个简单的方法.

编辑:

添加此行解决了我的问题:

table2.setCellValueFactory(param -> new ReadOnlyStringWrapper(param.getValue()));
Run Code Online (Sandbox Code Playgroud)

Ita*_*iha 6

这是一个简单的应用程序,我们尝试将单个值加载到TableView列中.它还显示了如何cellValueFactory()在表列上设置.

tableColumn.setCellValueFactory(param -> new ReadOnlyStringWrapper(param.getValue()));
Run Code Online (Sandbox Code Playgroud)

MCVE

import javafx.application.Application;
import javafx.beans.property.ReadOnlyStringWrapper;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        TableView<String> tableView = new TableView<>();
        TableColumn<String, String> tableColumn = new TableColumn<>("Name");

        tableColumn.setCellValueFactory(param -> new ReadOnlyStringWrapper(param.getValue()));

        tableView.getColumns().add(tableColumn);
        ObservableList<String> items = FXCollections.observableArrayList("Itachi");
        tableView.setItems(items);

        VBox root = new VBox(tableView);
        root.setAlignment(Pos.CENTER);
        Scene scene = new Scene(root, 300, 275);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 我仍然很好奇为什么人们更喜欢`ReadOnlyStringWrapper`到它的超类`SimpleStringProperty`.`ReadOnlyStringWrapper`不是不可修改的属性...... (2认同)