javafx:如何在 TableView 中显示字符串
javafx : how to show String in TableView
我想在 javafx 的 TableView 中显示一些字符串,但是当我将它们添加到 table 时,我可以 select 它们,这意味着它们已被添加,但它不会像那里那样显示字符串在他们里面是空的。
我以前使用 TableView 以这种方式显示对象的 属性 :
repositoriesColumn.setCellValueFactory(new PropertyValueFactory<Student, String>("name"));
在查看之后我会看到名字。我知道它是如何工作的。
但是这次我有一个 ArrayList 并且没有对象可以使用反射。只有字符串,我无法显示任何 属性。我试过这样做,但无济于事:
repositoriesColumn.setCellValueFactory(new PropertyValueFactory<String, String>("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 {
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();
}
}
我想在 javafx 的 TableView 中显示一些字符串,但是当我将它们添加到 table 时,我可以 select 它们,这意味着它们已被添加,但它不会像那里那样显示字符串在他们里面是空的。
我以前使用 TableView 以这种方式显示对象的 属性 :
repositoriesColumn.setCellValueFactory(new PropertyValueFactory<Student, String>("name"));
在查看之后我会看到名字。我知道它是如何工作的。
但是这次我有一个 ArrayList 并且没有对象可以使用反射。只有字符串,我无法显示任何 属性。我试过这样做,但无济于事:
repositoriesColumn.setCellValueFactory(new PropertyValueFactory<String, String>("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 {
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();
}
}