【问题标题】:JavaFX tableview columns text from List列表中的 JavaFX tableview 列文本
【发布时间】:2021-09-03 04:18:24
【问题描述】:

我只是对 JavaFX TableView 组件有问题。

我想根据数据库表名更改新的 TableView 列标题。我不想在我的列中使用数据库表数据名称。

现在我的代码是

public static void OpenMySQLDB(String tablenameid, TableView<?> hallintaTable)
{
    hallintaTable.getColumns().clear();
    String sql = "select * from" + " " + tablenameid;
    ObservableList data = FXCollections.observableArrayList();

    try{
        MySqlConnect mysqlConnect = new MySqlConnect();
        Statement stmt = mysqlConnect.connect().createStatement();
        //ResultSet
        ResultSet rsHaku = stmt.executeQuery(sql);

        for(int i=0 ; i<rsHaku.getMetaData().getColumnCount(); i++){
            int j = i;
            TableColumn col= new TableColumn(rsHaku.getMetaData().getColumnName(i+1));
            col.setCellValueFactory((Callback<CellDataFeatures<ObservableList, String>, ObservableValue<String>>) param -> new SimpleStringProperty(param.getValue().get(j).toString()));

            hallintaTable.getColumns().addAll(col);
        }

        while(rsHaku.next()){

            ObservableList<String> row = FXCollections.observableArrayList();
            for(int i=1 ; i<=rsHaku.getMetaData().getColumnCount(); i++){

                row.add(rsHaku.getString(i));
            }
            data.add(row);
        }
        hallintaTable.setItems(data);
    }catch(Exception e){
        e.printStackTrace();
    }
}

我在 TableView 列中列出了我想要的内容

它的 dcode 在这里:

  public static String[] admincomboValidator(String tablenameid) {

    String[] openadminTableName = new String[0];
    
    switch (tablenameid) {
        case "AJOJARJESTELY" -> openadminTableName = new String[]{"ID", "Tunnus", "Salasana"};
        case "GOOGLEMAP" -> openadminTableName = new String[]{"Reknro", "Merkki", "Hinta", "Kilometrit", "Renkaat kpl/hinta", "Vuokra/kk.", "AbaxID", "Huoltoväli", "Rengasmäärä"};
        case "KULJETTAJAT" -> openadminTableName = new String[]{"Kuljetusetäisyys km", "Ajosuorite km/p", "Ajopäivät /v", "Pitoaika/v", "Polttoaine l/100km", "ADBlue l/100km", "Renkaatkesto/km", "Keikka-aika h/k", "Keikkamäärä /kpl", "Apuaika %", "Palkka /h", "AutoID"};
        case "LAHETTAJA" -> openadminTableName = new String[]{"ID", "Poisto %", "Pääomakorko %", "Käyttöpääomakorko %", "Vakuutukset €/v", "Liikennöintimaksut €/v", "Hallintokustannukset €/v", "Ylläpitokustannukset €/v", "Muuajo km/v"};
        case "VASTAAOTTAJA" -> openadminTableName = new String[]{"ID", "Polttoaine €/l", "ADBlue €/l", "Voiteluaine €/%", "Korjaus €/%", "Muu tieto"};
        default -> System.out.println("Tietoja ei löydy");
    }
    return openadminTableName;
}

所以主要返回openadminTableName什么是String[] openadminTableName = new String[0];

在 Java Swing JTable 中是这样工作的:

 DefaultTableModel aModel = (DefaultTableModel) admintable.getModel();
        aModel.getDataVector().removeAllElements();
        aModel.setColumnIdentifiers(adminMeth.admincomboValidator(tablenameid, addButton, delButtoon, abaxIDButton, tablenameid));

但是我如何在 JavaFX TableView 组件中做同样的事情呢??

感谢您的支持。

【问题讨论】:

    标签: java tableview javafx-11


    【解决方案1】:

    我找到解决方案 - 如果有人需要:

              List<String> newColumnsString = adminHallintaController.admincomboValidator(tablenameid);
    
            for(int i=0 ; i<newColumnsString.size(); i++) {
                final int j = i;
                TableColumn col = new TableColumn(newColumnsString.get(i));
                col.setCellValueFactory((Callback<CellDataFeatures<ObservableList, String>, ObservableValue<String>>) param -> new SimpleStringProperty(param.getValue().get(j).toString()));
                hallintaTable.getColumns().addAll(col);
            }
            
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-31
      • 2016-11-24
      • 2014-03-25
      • 2017-11-01
      • 2015-09-04
      • 2012-11-07
      相关资源
      最近更新 更多