当前位置: 首页 > 知识库问答 >
问题:

JavaFX tableview列列表中的文本

陈淳
2023-03-14

我对JavaFX TableView组件有简单的问题。

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

现在我的代码是

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列中列出我想要的内容

其数据代码如下:

  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什么是字符串[]openadminTableName=新字符串[0];

在Java Swing JTable中,它的工作方式如下:

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

但是我怎么能做同样的JavaFX TableView组件??

谢谢你的支持。

共有1个答案

连俊智
2023-03-14

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

          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);
        }
        
 类似资料:
  • 问题内容: 蟒蛇 我有一个清单清单。喜欢 我想计算每个列表在主列表中出现了多少次。 我的输出应该像 问题答案: 只需使用来自:

  • rank ▲ ✰ vote url 45 441 233 760 url 合并列表中的列表 可能重复的问题: Flattening a shallow list in Python Comprehension for flattening a sequence of sequences? 我想是不是有更好的方法 我可以用一个循环来做,但是除了这样做还有什么更cool的用一行来做的方法?我用redu

  • 问题内容: 现在,我想创建一个新列表,其中包含中的所有值。这里的结果应该包含 问题答案: 使用以下方法尝试:

  • 问题内容: 我有一个 清单清单 : 我想转换为一个 集合, 即删除重复列表并从中创建一个仅包含 唯一 列表的新列表。 在上述情况下,所需答案将是 但是当我这样做时,它给了我错误 TypeError:无法散列的类型:“列表” 你能解决我的问题吗?提前致谢! 问题答案: 由于列表是可变的,因此不能进行哈希处理。最好的选择是将它们转换为元组并形成一个集合,像这样 我们一次遍历一个列表,将其转换为一个元组

  • 问题内容: 我在python中有一个由列表列表建模的2D数组,我想提取该列。我进行了快速研究,发现了一种使用numpy数组的方法。问题是 我不想使用numpy, 所以不想将列表列表转换为numpy数组,然后使用[:,1]语法。我尝试在正常的列表列表上使用它,但显示错误,因此是不可能的。我正在为列表列表请求类似的东西,而不必遍历每个元素(在numpy数组中,使用[:,1]语法访问列比在数组元素上进行

  • 问题内容: 过程/输出的示例为: 文件1: 文件2: 串联后的结果文件: 文件3: 对于大量非预期文本(无通配符-但行如上所述对齐)。 我无法弄清楚如何在Ubuntu下使用粘贴命令来做到这一点。 问题答案: