2017-11-29 24 views
-2

javafx의 테이블 뷰에 데이터를 표시해야하는 프로젝트가 있습니다. 문제는 다음과 같습니다. 항목에 하나의 데이터가 있으면 tableview에 표시 될 수 있습니다. 그러나 목록에 여러 데이터를 추가하고 싶지만 어떻게해야할지 모르겠습니다. 어디서 편집해야합니까? 있는 tableview에Javafx는 다중 데이터를 테이블 뷰에 삽입 할 수 없습니다.

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!"); 
    } 
    //show data in table 
    OrderedList l=new OrderedLinkedList(); 
    l.add(entry); 
    showDataInTable(l); 

} 

삽입 데이터 : 그 라인의

private void showDataInTable(OrderedList entryList){ 
    ObservableList<Entry> list = FXCollections.emptyObservableList(); 
    for(int i=0;i<entryList.size();i++){ 
     Entry entry=entryList.get(i); 
     Class<? extends Entry> clz=entry.getClass(); 
     if(Untils.checkField(clz, "journal")){ 
      Col_Journal.setCellValueFactory(new PropertyValueFactory<Entry, String>("journal")); 
     } 
     if(Untils.checkField(clz, "booktitle")){ 
      Col_Booktitle.setCellValueFactory(new PropertyValueFactory<Entry, String>("booktitle")); 
     } 
     if(Untils.checkField(clz, "author")){ 
      Col_Author.setCellValueFactory(new PropertyValueFactory<Entry, String>("author_str")); 
     } 
     if(Untils.checkField(clz, "editor")){ 
      Col_Editor.setCellValueFactory(new PropertyValueFactory<Entry, String>("editor")); 
     } 

     Col_BKey.setCellValueFactory(new PropertyValueFactory<Entry, String>("name")); 
     Col_Title.setCellValueFactory(new PropertyValueFactory<Entry, String>("title")); 
     Col_Year.setCellValueFactory(new PropertyValueFactory<Entry, String>("year")); 
     Col_EntryType.setCellValueFactory(new PropertyValueFactory<Entry, String>("entryType")); 

     list.add(entry);    
    } 
    table_id.setItems(list); 


} 
+0

"오류가 있습니다." 어떤 오류입니까? –

+0

@James_D tableview에 다중 항목을 표시 할 수는 없지만 listview에 하나의 항목이있는 tableview에 표시 될 수 있습니다. – JhihweiLi

+0

죄송합니다. @ James_D 오류가 없습니다. 테이블 뷰에 다중 데이터를 삽입하는 방법을 모르겠습니다. – JhihweiLi

답변

0

많은 것이 내가 checkField을 제거한

private void showDataInTable(OrderedList entryList){ 
    ObservableList<Entry> list = FXCollections.emptyObservableList(); 
    for(int i=0;i<entryList.size();i++){ 
     Entry entry=entryList.get(i); 
     list.add(entry); 
    } 

    Col_Journal.setCellValueFactory(new PropertyValueFactory<Entry, String>("journal")); 
    Col_Booktitle.setCellValueFactory(new PropertyValueFactory<Entry, String>("booktitle")); 
    Col_Author.setCellValueFactory(new PropertyValueFactory<Entry, String>("author_str")); 
    Col_Editor.setCellValueFactory(new PropertyValueFactory<Entry, String>("editor")); 
    Col_BKey.setCellValueFactory(new PropertyValueFactory<Entry, String>("name")); 
    Col_Title.setCellValueFactory(new PropertyValueFactory<Entry, String>("title")); 
    Col_Year.setCellValueFactory(new PropertyValueFactory<Entry, String>("year")); 
    Col_EntryType.setCellValueFactory(new PropertyValueFactory<Entry, String>("entryType")); 

    table_id.setItems(list); 

} 

루프 외부에서 유지로되어있다, 당신은 필요하지 않습니다 유사한 많은 클래스와 비슷하게 보이는 하나의 큰 Entry 클래스를 사용할 수 있으며 사용되지 않은 필드는 비워 둡니다.

public class Entry { 

    private SimpleStringProperty journal = new SimpleStringProperty(""); 
    private SimpleStringProperty booktitle = new SimpleStringProperty(""); 
    private SimpleStringProperty author_str = new SimpleStringProperty(""); 
    private SimpleStringProperty editor = new SimpleStringProperty(""); 
    private SimpleStringProperty name = new SimpleStringProperty(""); 
    private SimpleStringProperty title = new SimpleStringProperty(""); 
    private SimpleStringProperty year = new SimpleStringProperty(""); 
    private SimpleStringProperty entryType = new SimpleStringProperty(""); 

    public Entry(String Sjournal, String Sbooktitle, String Sauthor_str, String Seditor, String Sname, String Stitle, String Syear, String SentryType){ 
     journal.set(Sjournal); 
     booktitle.set(Sbooktitle); 
     author_str.set(Sauthor_str); 
     editor.set(Seditor); 
     name.set(Sname); 
     title.set(Stitle); 
     year.set(Syear); 
     entryType.set(SentryType); 
    } 

}