2017-11-27 7 views
0

Ich habe eine Frage mit javafx. Ich habe ein Projekt, das mit einer Bib-Datei funktioniert. Ich stehe vor einem Problem, wenn ich eine Klassendaten (Entry) in die Tabellenansicht einfügen möchte. Aber es ist immer noch leer in der Tabellenansicht. Die Operation gibt einen Namen ein und sucht nach einer Bib-Datei und zeigt dann das Ergebnis in der Tabellenansicht an. Dank The gui imageJavafx Wie kann ich Daten in die Tabellenansicht einfügen

Ich habe eine Klasse

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

die Tableview füllen, aber es immer noch leer.

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

    } 
+0

Die co de Sie zeigten nur eine leere Liste und legt sie als Backing-Liste für die Tabelle fest. Wo erstellen Sie die Daten und fügen sie zur Liste hinzu? –

+0

Ich habe meinen Fragencode bearbeitet. Ich lese die Bib-Datei und gebe einen Namen in den Text ein, um einen Eintrag aus der Datei zu suchen. Ich möchte diesen Eintrag in die Tabellenansicht einfügen, weiß aber nicht wie. Danke @James_D – JhihweiLi

Antwort

0

Das einzige, was fehlt, ist setCellValueFactory

Wenn Sie alle Ihre Felder aus String in SimpleStringProperty zum Beispiel ändern können private String title; in private SimpleStringProperty title dann können Sie einfach hinzufügen

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

sonst muss man Nachschlag für eine komplexere setCellValueFactory

Verwandte Themen