我想在javafx中的TableView中显示一些字符串,但是当我将它们添加到表中时,我可以选择它们,这意味着它们被添加但是它会显示字符串,就像它们中的null一样.
我之前使用过TableView以这种方式显示对象的属性:
repositoriesColumn.setCellValueFactory(new PropertyValueFactory("name"));
并且在查看之后我会看到名字.我知道它是如何工作的.
但是这次我有一个ArrayList,没有对象可以使用refelection.只有字符串,我不能得到任何财产显示.我试过这样做,但它没有帮助:
repositoriesColumn.setCellValueFactory(new PropertyValueFactory("string"));
这是列的声明:
@FXML public javafx.scene.control.TableColumn repositoriesColumn; @FXML public javafx.scene.control.TableColumn ownerColumn;
而且我找不到与互联网类似的东西,我该怎么办?
我不确定我是否完全理解你的问题,但你可以将字符串包装在属性中并添加它.像这样的东西:
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 { Collectionlist = new ArrayList<>(); list.add("String1"); list.add("String2"); list.add("String3"); list.add("String4"); list.add("String5"); list.add("String6"); ObservableList details = FXCollections.observableArrayList(list); TableView tableView = new TableView<>(); TableColumn 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(); } }