JavaFX中ComboBox的Tableview上未显示字符串

JavaFX中ComboBox的Tableview上未显示字符串,java,javafx,openjdk,Java,Javafx,Openjdk,我一直在尝试用Java显示我从组合框到表视图中选择的内容。我已经花了几个小时寻找解决方案,但没有用。我没有任何错误,但我似乎无法在TableView上显示字符串。我想寻求帮助 java有一个组合框和一个按钮,可以单击它应该在组合框中将字符串添加到表中的位置。我跳过了一些代码 MainView.java public class MainView extends Application { public static String selectedItemComboBox; Button

我一直在尝试用Java显示我从组合框到表视图中选择的内容。我已经花了几个小时寻找解决方案,但没有用。我没有任何错误,但我似乎无法在TableView上显示字符串。我想寻求帮助

java有一个组合框和一个按钮,可以单击它应该在组合框中将字符串添加到表中的位置。我跳过了一些代码

MainView.java

public class MainView extends Application {
  public static String selectedItemComboBox;

  Button btnAdd = new Button(Constants.BUTTON_ADD);

  btnAdd.setOnAction(new EventHandler<ActionEvent>() {

    public void handle(ActionEvent arg0) {  
      selectedItemComboBox = comboBox.getSelectionModel().getSelectedItem().toString();
      ReportManager.showCart();
      ReportManager.addToTable();
    }
  });
}
public class ReportManager {

  public static void addToTable(){
        if(ReportCart.details.isEmpty()){
        ReportCart.details.add(new JasperTableModel(MainView.selectedItemComboBox.toString()));
        System.out.println(jasperList.toString());
    }else{
        if(ReportCart.details.contains(MainView.selectedItemComboBox)){
            System.out.println("Selected Jasper File already added to cart.");
        }else{
            ReportCart.details.add(new JasperTableModel(MainView.selectedItemComboBox.toString()));
            System.out.println(jasperList.toString());
        }
    }
}
public class ReportCart extends Stage{
  public static TableView<JasperTableModel> tableView = new TableView<>();
  public static ObservableList<JasperTableModel> details = FXCollections.observableArrayList(new JasperTableModel("TEST"), 
        new JasperTableModel("TEST1"),
        new JasperTableModel("TEST2"));

    public static void start() {
      ObservableList<String> details = FXCollections.observableArrayList(ReportManager.jasperList);
      tableView.getColumns().add(jasperFileNameColumn);
      jasperFileNameColumn.setCellValueFactory(data -> new SimpleStringProperty(data.getValue()));
      tableView.setItems(details);
  }
}
public class JasperTableModel {

    public final SimpleStringProperty fileN;

    public JasperTableModel(String fileNn) {
        this.fileN = new SimpleStringProperty(fileNn);
    }

    public String getFileName() {
        return fileN.get();
    }
    public void setFileName(String fNamee) {
        fileN.set(fNamee);
    }
}
这是我的另一个视图类,它有TableView

ReportCart.Java

public class MainView extends Application {
  public static String selectedItemComboBox;

  Button btnAdd = new Button(Constants.BUTTON_ADD);

  btnAdd.setOnAction(new EventHandler<ActionEvent>() {

    public void handle(ActionEvent arg0) {  
      selectedItemComboBox = comboBox.getSelectionModel().getSelectedItem().toString();
      ReportManager.showCart();
      ReportManager.addToTable();
    }
  });
}
public class ReportManager {

  public static void addToTable(){
        if(ReportCart.details.isEmpty()){
        ReportCart.details.add(new JasperTableModel(MainView.selectedItemComboBox.toString()));
        System.out.println(jasperList.toString());
    }else{
        if(ReportCart.details.contains(MainView.selectedItemComboBox)){
            System.out.println("Selected Jasper File already added to cart.");
        }else{
            ReportCart.details.add(new JasperTableModel(MainView.selectedItemComboBox.toString()));
            System.out.println(jasperList.toString());
        }
    }
}
public class ReportCart extends Stage{
  public static TableView<JasperTableModel> tableView = new TableView<>();
  public static ObservableList<JasperTableModel> details = FXCollections.observableArrayList(new JasperTableModel("TEST"), 
        new JasperTableModel("TEST1"),
        new JasperTableModel("TEST2"));

    public static void start() {
      ObservableList<String> details = FXCollections.observableArrayList(ReportManager.jasperList);
      tableView.getColumns().add(jasperFileNameColumn);
      jasperFileNameColumn.setCellValueFactory(data -> new SimpleStringProperty(data.getValue()));
      tableView.setItems(details);
  }
}
public class JasperTableModel {

    public final SimpleStringProperty fileN;

    public JasperTableModel(String fileNn) {
        this.fileN = new SimpleStringProperty(fileNn);
    }

    public String getFileName() {
        return fileN.get();
    }
    public void setFileName(String fNamee) {
        fileN.set(fNamee);
    }
}

我可以获取ArrayList的值,但无法在TableView上显示它。可观察列表是空的。提前谢谢

您能在表视图中显示硬编码字符串吗?@Emanuel我曾尝试在表视图中显示硬编码字符串,但它只显示空白。我可以单击,但没有显示。有什么想法吗?谢谢今天我将试着重现你的问题。是否在initialize()方法中初始化了表视图?(setCellValueFactory…?很遗憾,我没有initialize()方法。我已经更新了上面的代码。试图跟踪Oracle网站上的文档。我试图显示“TEST”、“TEST1”和“TEST2”字符串,但它在我的表视图中只显示空格。您能在表视图中显示硬编码字符串吗?@Emanuel我试图在我的表视图中显示硬编码字符串,但它只显示空格。我可以单击,但没有显示。有什么想法吗?谢谢今天我将试着重现你的问题。是否在initialize()方法中初始化了表视图?(setCellValueFactory…?很遗憾,我没有initialize()方法。我已经更新了上面的代码。试图跟踪Oracle网站上的文档。我试图显示“TEST”、“TEST1”和“TEST2”字符串,但它只在我的表视图上显示空白。