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

时间:2017-03-20 09:58:56

标签: java javafx openjdk

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

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

这是ReportManager类。我将组合框中的字符串存储到ArrayList中,以便将其传递给ObservableList,就像我在Web上的一个示例中看到的那样。

ReportManager.java

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

这是我的另一个具有TableView的View类。

ReportCart.Java

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

JasperTableModel.java

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上显示它。 ObservableList为空。提前谢谢!

0 个答案:

没有答案