表视图不显示数据 javafx

用户8313128

我正在开发一个项目应用程序,它应该在TableView. 证书文件采用 DER 编码,并从客户端计算机的特定文件夹加载。当他点击应用程序窗口中的 HDD 图标时,我调用handleHDD()控制器功能来加载证书并在TabeView.

这是handleHDD()我的控制器中的函数代码

@FXML
private void handleHDD() throws CertificateException, IOException, NoSuchProviderException{
    String userDir = System.getProperty("user.home");
    File folder = new File(userDir +"\\Desktop\\Certificate_Folder");
    FilenameFilter filter = new MyFileFilter();

    File[] certificates = folder.listFiles(filter);

    ObservableList<CertificateModel> data = FXCollections.observableArrayList();
    String columnHeader[] = {"Nom","Version","N°série","Algorithme de signature","Emetteur","Valide à partir de","Valide jusqu'au","Objet","Clé publique"};
    if (certificates!=null){
        int sizeColumns = 9;

        for (File file : certificates){
            if(file.isFile()){
            try{

            CertificateFactory cf = CertificateFactory.getInstance("X.509");
            FileInputStream input = new FileInputStream(file);

            X509Certificate cert = (X509Certificate)cf.generateCertificate(input);

            for (int j = 0; j < sizeColumns; j++) {
                TableColumn<CertificateModel, String> col = new TableColumn();
                col.setText(columnHeader[j]);
                col.setMinWidth(200);

                col.setCellValueFactory(new PropertyValueFactory<CertificateModel, String>(columnHeader[j]));
                table.getColumns().addAll(col);

            }

            data.add(new CertificateModel(file.getName().replace(".der", ""), cert.getVersion(),cert.getSerialNumber().toString(16), cert.getSigAlgName(), cert.getIssuerDN().toString(), cert.getNotBefore(), cert.getNotAfter(), cert.getSubjectDN().toString(), cert.getPublicKey().toString()));
            table.setItems(data);
            }catch (IOException e){
                e.printStackTrace();
            }
            }

            }

        }
    }

还有我的CertificateModel.java课:

public class CertificateModel {

private String nom;
private int version;
private String numserie;
private String algosign;
private String emetteur;
private Date validfrom;
private Date validto;
private String objet;
private String clepub;

public CertificateModel(String nom, int type, String numserie, String algosign, String emetteur, Date validfrom, Date validto, String objet, String clepub) {
    this.nom = nom;
    this.version = type;
    this.numserie = numserie;
    this.algosign = algosign;
    this.emetteur = emetteur;
    this.validfrom = validfrom;
    this.validto = validto;
    this.objet = objet;
    this.clepub = clepub;
}

public void setNom(String nom) {
    this.nom = nom;
}

public void setType(int type) {
    this.version = type;
}

public void setNumserie(String numserie) {
    this.numserie = numserie;
}

public void setAlgosign(String algosign) {
    this.algosign = algosign;
}

public void setEmetteur(String emetteur) {
    this.emetteur = emetteur;
}

public void setValidfrom(Date validfrom) {
    this.validfrom = validfrom;
}

public void setValidto(Date validto) {
    this.validto = validto;
}

public void setObjet(String objet) {
    this.objet = objet;
}

public void setClepub(String clepub) {
    this.clepub = clepub;
}

private static final Logger LOG = Logger.getLogger(CertificateModel.class.getName());

public String getNom() {
    return nom;
}

public int getType() {
    return version;
}

public String getNumserie() {
    return numserie;
}

public String getAlgosign() {
    return algosign;
}

public String getEmetteur() {
    return emetteur;
}

public Date getValidfrom() {
    return validfrom;
}

public Date getValidto() {
    return validto;
}

public String getObjet() {
    return objet;
}

public String getClepub() {
    return clepub;
}

public static Logger getLOG() {
    return LOG;
}

}

当我在调试模式下检查我的代码时,我可以在变量中看到我的所有数据,但 tableview 仍然是空的。

请帮助!

太阳火焰

如果您确切知道有 9 列,最好为每列创建一个单独的列,而不是在循环中创建它们。因此,您可以将它们添加到.fxml文件中。然后你必须做几件事:

  • 重构您的模型类,并Property为要在表中显示的值而不是简单的对象添加-s,例如:

    private String nom; ->private StringProperty nom;
    private int version; -> private IntegerProperty version
    . . .
    private Date validfrom; -> private ObjectProperty<Date> validfrom;
    . . .
    

    然后他们的吸气剂。

  • 以这种方式为每一列设置 cellValueFactory:

    nomColumn.setCellValueFactory(data -> data.getValue().nomProperty());
    

    那么它应该工作。

如果您使用这种方式,您的代码将更易于理解、更清晰,并且您可以看到发生了什么。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Javafx TableView 不显示数据

来自分类Dev

JavaFX Piechart不显示任何数据

来自分类Dev

JavaFx 按钮不显示

来自分类Dev

JavaFX动态TableView不显示数据库中的数据

来自分类Dev

javafx Tableview不显示数据库中的数据

来自分类Dev

JavaFX虚拟键盘不显示

来自分类Dev

JavaFX虚拟键盘不显示

来自分类Dev

数据未出现在javafx表视图中

来自分类Dev

JavaFX表视图单元重用

来自分类Dev

JavaFX表视图行颜色

来自分类Dev

JavaFX ComboBox不显示COM端口

来自分类Dev

JavaFX- MediaView不显示视频

来自分类Dev

JavaFX setGraphic()在MenuItem中不显示图标

来自分类Dev

MenuButton在Javafx中不显示项目

来自分类Dev

JavaFX中的TextFlow不显示任何内容

来自分类Dev

JavaFX- MediaView不显示视频

来自分类Dev

javafx标签不显示循环结果

来自分类Dev

数据未显示在我的表 JavaFX/SceneBuilder 中

来自分类Dev

JavaFX ScatterChart用空数据集初始化时不显示图例符号

来自分类Dev

JavaFX ScatterChart用空数据集初始化时不显示图例符号

来自分类Dev

AngularJS视图不显示数据

来自分类Dev

使列表视图显示我想要的JavaFX

来自分类Dev

TornadoFX JavaFX Sync跨表视图滚动

来自分类Dev

引导表不显示数据

来自分类Dev

在Javafx中从数据库填充表视图后,按钮停止工作

来自分类Dev

在JavaFX中如何在表视图中添加带有数据的组合框

来自分类Dev

javafx快照而不显示应用程序或场景

来自分类Dev

仅菜单项不显示的JavaFX ContextMenu

来自分类Dev

JavaFX-生成App Jar时不显示虚拟键盘