【问题标题】:Javafx how can I insert data to tableviewJavafx如何将数据插入tableview
【发布时间】:2018-05-10 18:01:47
【问题描述】:

我对 javafx 有疑问。我有一个对 bib 文件进行操作的项目。当我想将类数据(条目)插入表视图时遇到问题。但它在tableview中仍然是空的。操作是键入名称并从 bib 文件中搜索,然后在表格视图中显示结果。 谢谢 The gui image

我有课

public class Entry implements Comparable<Entry>{
  public static final int ignoreOrder=-1;
  public static final int OrderByName=0;
  public static final int OrderByTitle=1;
  public static final int OrderByYear=2;
  private String name;
  private String title="";
  private String year="0";
  private int order=OrderByName;

  public int getOrder() {
      return order;
  }
  public void setOrder(int order) {
      this.order = order;
  }
  public Entry(String name){
      this.name=name;
  }
  public String getName() {
      return name;
  }

  public void setName(String name) {
      this.name = name;
  }

  public String getTitle() {
      return title;
  }
  public void setTitle(String title) {

      this.title = title;
  }
  public String getYear() {
      return year;
  }
  public void setYear(String year) {
      this.year = year;
  }
}

填满tableview,但还是空的。

@FXML
private TableView<Entry> table_id;
@FXML
private TableColumn<Entry, String> Col_BKey;
@FXML
private TableColumn<Entry, String> Col_counts;
@FXML
private TableColumn<Entry, String> Col_EntryType;
@FXML
private TableColumn<Entry, String> Col_Title;
@FXML
private TableColumn<Entry, String> Col_Year;
@FXML
private TableColumn<Entry, String> Col_Booktitle;
@FXML
private TableColumn<Entry, String> Col_Author;




public void loadFile(ActionEvent event){
        int orderModel=0;
        if(title_radio.isSelected()){
            orderModel=1;
        }else if(year_radio.isSelected()){
            orderModel=2;
        }
        ReadingProcessor readingProcessor=new ReadingProcessor(new OrderedLinkedList(orderModel));
        entryList=readingProcessor.read(filePath);
    }

    public void SelectOKAction(ActionEvent event) {

        String searchStr=select_text.getText();
        if(searchStr==null||searchStr.trim().equals("")){
            AlertBox.display("Wrong", "Please enter entry's name");
            return;
        }
        Entry entry=entryList.search(searchStr);
        if(entry==null){//NOT FOOUND
            AlertBox.display("Wrong", "Entry not exists!");
        }

        ObservableList<Entry> list = FXCollections.observableArrayList(entry);
        table_id.setItems(list);

    }

【问题讨论】:

  • 您显示的代码只是创建了一个空列表并将其设置为表的后备列表。您实际在哪里创建数据并将其添加到列表中?
  • 我编辑了我的问题代码。我阅读了 bib 文件并在文本中输入名称以从文件中搜索条目。我想将此条目插入到 tableview 中,但我不知道如何。谢谢@James_D

标签: javafx insert tableview scenebuilder


【解决方案1】:

唯一缺少的是setCellValueFactory

如果您可以将所有字段从String 更改为SimpleStringProperty,例如将private String title; 更改为private SimpleStringProperty title,那么您可以简单地添加

Col_Title.setCellValueFactory(new PropertyValueFactory<Row, String>("title"));

否则你必须查找更复杂的setCellValueFactory

【讨论】:

    猜你喜欢
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    • 2016-09-06
    • 2023-03-20
    • 1970-01-01
    • 2014-05-15
    相关资源
    最近更新 更多